0%

Python如何打印日志

日志

日志是跟踪软件运行时所发生的事件的一种方法。软件开发者在代码中调用日志函数,表明发生了特定的事件。事件由描述性消息描述,该描述性消息可以可选地包含可变数据(即,对于事件的每次出现都潜在地不同的数据)。事件还具有开发者归因于事件的重要性;重要性也可以称为级别或严重性。

什么时候使用Logging

logging提供了一组便利的函数,用来做简单的日志。它们是 debug()、 info()、 warning()、 error() 和 critical()。

logging函数根据它们用来跟踪的事件的级别或严重程度来命名。标准级别及其适用性描述如下(以严重程度递增排序):

级别 何时使用
DEBUG 详细信息,一般只在调试问题时使用。
INFO 证明事情按预期工作。
WARNING 某些没有预料到的事件的提示,或者在将来可能会出现的问题提示。例如:磁盘空间不足。但是软件还是会照常运行。
ERROR 由于更严重的问题,软件已不能执行一些功能了。
CRITICAL 严重错误,表明软件已不能继续运行了。

打印日志到控制台

由于默认设置的等级是warning,所有只有warning的信息会输出到控制台。

1
2
3
4
5
6
import logging

logging.warning('Watch out!') # will print a message to the console
logging.info('I told you so') # will not print anything

WARNING:root:Watch out!

打印日志到文件

1
2
3
4
5
6
7
8
9
10
import logging

logging.basicConfig(filename='example.log',level=logging.DEBUG)
logging.debug('This message should go to the log file')
logging.info('So should this')
logging.warning('And this, too')

DEBUG:root:This message should go to the log file
INFO:root:So should this
WARNING:root:And this, too

我们设置了logging的级别为DEBUG,所以所有信息都将被写入到example.log文件中。

如果想要每次启动时,原来的打印日志都被清空的话,则需要把filemode由默认的a改为w

1
logging.basicConfig(filename='example.log', filemode='w', level=logging.DEBUG)

日志的格式

日志级别

1
2
3
4
5
6
7
8
9
import logging
logging.basicConfig(format='%(levelname)s:%(message)s', level=logging.DEBUG)
logging.debug('This message should appear on the console')
logging.info('So should this')
logging.warning('And this, too')

DEBUG:This message should appear on the console
INFO:So should this
WARNING:And this, too

日期

1
2
3
4
5
import logging
logging.basicConfig(format='%(asctime)s %(message)s')
logging.warning('is when this event was logged.')

2019-02-07 22:21:20,993 is when this event was logged.