2021-08-16-Logging打印日志
详细见博客:https://www.cnblogs.com/nancyzhu/p/8551506.html
logging函数根据它们用来跟踪的事件的级别或严重程度来命名。标准级别及其适用性描述如下(以严重程度递增排序):
级别 | 何时使用 |
---|---|
DEBUG |
详细信息,一般只在调试问题时使用。 |
INFO |
证明事情按预期工作。 |
WARNING |
某些没有预料到的事件的提示,或者在将来可能会出现的问题提示。例如:磁盘空间不足。但是软件还是会照常运行。 |
ERROR |
由于更严重的问题,软件已不能执行一些功能了。 |
CRITICAL |
严重错误,表明软件已不能继续运行了。 |
默认等级是WARNING
,这意味着仅仅这个等级及以上的才会反馈信息,除非logging模块被用来做其它事情。
被跟踪的事件能以不同的方式被处理。最简单的处理方法就是把它们在控制台上打印出来。另一种常见的方法就是写入磁盘文件。
一、打印到控制台
1
2
3
4
import logging
logging.debug('debug 信息')
logging.warning('只有这个会输出。。。')
logging.info('info 信息')
由于默认设置的等级是warning,所有只有warning的信息会输出到控制台。
1
WARNING:root:只有这个会输出。。。
利用logging.basicConfig()打印信息到控制台
1
2
3
4
5
6
7
8
import logging
logging.basicConfig(format='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s',
level=logging.DEBUG)
logging.debug('debug 信息')
logging.info('info 信息')
logging.warning('warning 信息')
logging.error('error 信息')
logging.critical('critial 信息')
由于在logging.basicConfig()中的level 的值设置为logging.DEBUG, 所有debug, info, warning, error, critical 的log都会打印到控制台。
1
2
3
4
5
6
日志级别: debug < info < warning < error < critical
logging.debug('debug级别,最低级别,一般开发人员用来打印一些调试信息')
logging.info('info级别,正常输出信息,一般用来打印一些正常的操作')
logging.warning('waring级别,一般用来打印警信息')
logging.error('error级别,一般用来打印一些错误信息')
logging.critical('critical 级别,一般用来打印一些致命的错误信息,等级最高')
所以如果设置level = logging.info()的话,debug 的信息则不会输出到控制台。
二、利用logging.basicConfig()保存log到文件
1
2
3
4
5
6
7
8
logging.basicConfig(level=logging.DEBUG,#控制台打印的日志级别
filename='new.log',
filemode='a',##模式,有w和a,w就是写模式,每次都会重新写日志,覆盖之前的日志
#a是追加模式,默认如果不写的话,就是追加模式
format=
'%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s'
#日志格式
)
如果在logging.basicConfig()设置filename 和filemode,则只会保存log到文件,不会输出到控制台。