python日志

简化和实用的处理日志请参考Python日志处理基础

Python非常容易实现日志功能,因为提供了logging模块方便开发者在代码事件中添加日志调用。事件是通过可选的包含变量的描述信息所组成。事件还有一个重要的特性是可以设置日志级别。

什么时候使用logging

logging提供一系列简化的日志功能,提供级别有debug(), info(), warning(), error()critical()

简单案例

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

上述没有指定输出到文件,则默认在终端输出。

日志记录到文件

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')

注意:在日志文件中会同时记录日志级别,所以默认显示如下:

如果希望通过命令行参数来设置日志级别,例如--log=INFO,则可以使用如下方法获取参数:

以下是一个案例:

这里调用了basicConfig()来设置日志级别

从多个模块进行日志

如果程序包含多个模块,以下是组织logging的一个案例:

此时运行myapp.py将在日志文件myapp.log看到如下内容:

日志变量值

对于比阿亮数据,可以将变量作为参数传递:

日志格式

在日志中显示时间

则日志如下:

默认时间格式是ISO8601,即类似如上。如果需要控制日期格式,可以使用basicconfig:

则日志内容如下:

模块话日志

logging通过调用Logger累的方法来实现,所以创建logger对象:

配置Logging

运行以上案例输入:

以下哪里创建loggerhandler以及formatter

以下是logging.conf配置文件:

则日志输出如下

简单的日志

  • 简单记录日志

  • 日志中增加时间戳

  • 设置日志级别:

然后通过如下方法记录日志

参考 Basic example - log to a file

多线程日志记录

以下案例是主线程(initlal)和其他线程同时记录日志的方法

参考 Logging Cookbook

日志文件中的空行

但是发现日志中每行记录后面都有一个空白行,所以记录日志中增加strip()去除多余回行

参考

Last updated

Was this helpful?