Python中如何选择合适的日志级别?
我想知道关于这 4 个日志级别 INFO 、 WARNING 、 ERROR 、 CRITICAL ,分别在哪种场景适合用哪种日志级别,比如抛出异常、 IO 操作失败使用 ERROR 。
求老司机列举出尽可能多的场景,免得新人迷路。
Python中如何选择合适的日志级别?
看心情
在Python的logging模块里,选日志级别主要看这条信息有多重要,以及你想用它干嘛。核心就这五个级别,从轻到重:
- DEBUG:最细的,开发调试用。比如记录函数入口参数、循环变量、中间计算结果。上线后通常关掉。
- INFO:确认事情按预期运行。比如“服务器已启动在8080端口”、“用户登录成功”、“任务队列已提交”。
- WARNING:表示发生了意外或可能有问题,但程序还能继续跑。比如“磁盘空间不足80%”、“从备用配置读取数据”、“API响应比预期慢”。
- ERROR:某个功能失败了,但程序整体还没挂。比如“数据库连接失败”、“文件解析错误”、“外部API调用返回错误码”。
- CRITICAL:非常严重,程序可能要挂了。比如“数据库连不上且无备用连接”、“内存耗尽”、“关键配置文件丢失”。
怎么选?简单说就是:调试用DEBUG,正常流程用INFO,可恢复的异常用WARNING,功能失败用ERROR,要挂掉了用CRITICAL。
举个例子,一个Web应用里:
- 收到请求时记录
INFO级别的路径。 - 用户输入格式不对,返回400,可以记个
WARNING。 - 查询数据库没找到数据,这是业务正常情况,可能记
INFO或WARNING都行,看你怎么定义。 - 查询数据库时连接超时,这该记
ERROR。 - 如果连数据库都连不上,服务启动不了,那就得是
CRITICAL了。
设置的时候,在代码里用logging.basicConfig(level=logging.INFO)把根记录器级别设为INFO,这样DEBUG消息就不会输出了,生产环境就这么干。开发时你可以设为DEBUG看个仔细。
总结:根据信息的重要性和用途来选级别。
日志级别不分语言的吧,这个是 golang 的一个第三方日志 package 的说明,很详细了:
https://github.com/cihub/seelog/wiki/Log-levels
Level When it ’ s used
DEBUG Detailed information, typically of interest only when diagnosing problems.
INFO Confirmation that things are working as expected.
WARNING An indication that something unexpected happened, or indicative of some problem in the near future (e.g. ‘ disk space low ’). The software is still working as expected.
ERROR Due to a more serious problem, the software has not been able to perform some function.
CRITICAL A serious error, indicating that the program itself may be unable to continue running.
https://docs.python.org/3/howto/logging.html
OK ,这我知道。我只是想知道关于实际场景的信息。什么情况是 ERROR 之类的
谢谢。


