Skip to content

《简明教程》Python 中的日志

Posted on:September 25, 2023 at 06:25 PM

日志记录是程序员工具箱中非常有用的工具。它可以帮助您更好地理解程序的流程,并发现您在开发时可能没有想到的场景。

Python 的日志模块

Python 中的日志模块是一个开箱即用且功能强大的模块。大多数第三方 Python 库都使用它来构建日志功能。

我们可以在 Python 程序中简单的导入日志模块:

import logging

导入日志模块后,我们可以简单的使用 logging 来记录你想要查看的信息。 默认情况下,有5个标准级别来表示事件的严重程度,这五个级别按照严重性从低到高依次如下:

日志模块提供了一个默认的 logger,无语配置即可使用。

import logging

logging.debug('这是一个调试消息')
logging.info('这是一个 info 消息')
logging.warning('这是一个 warning 消息')
logging.error('这是一个n error 消息')
logging.critical('这是一个 critical 消息')

输出如下:

WARNING:root:这是一个 warning 消息
ERROR:root:这是一个n error 消息
CRITICAL:root:这是一个 critical 消息

输出显示每条消息之前的严重性级别以及root,root 这是日志记录模块为其默认 logger 提供的名称。

我们看到:debug()info()消息没有被记录。 这是因为,默认情况下,日志记录模块会记录严重级别为 WARNING 或更高级别的消息。

基本配置

我们可以使用 basicConfig(**kwargs) 方法,该方法有如下参数:

通过 level 指定日志级别

通过使用该level参数,可以设置要记录的日志消息的级别(通常使用 logging 的常量来指定)。

import logging

logging.basicConfig(level=logging.DEBUG)
logging.debug('调试消息也会被输出')
DEBUG:root:调试消息也会被输出

现在,所有DEBUG级别或DEBUG级别以上的事件都将被记录。

指定日志文件

同样,对于记录到文件而不是控制台,可以使用 file 相关参数。

import logging

logging.basicConfig(filename='app.log', filemode='w', format='%(name)s - %(levelname)s - %(message)s')
logging.warning('输出到文件的日志')

上面参数含义:

打开 app.log 可以看到:

root - ERROR - 输出到文件的日志

!!! note basicConfig() 只能调用一次 第一次调用basicConfig()函数之后,后续调用会在 basicConfig() 在内部调用该函数 !!!

使用 format 格式化输出

使用%(process)d记录进程 ID:

import logging

logging.basicConfig(format='%(process)d-%(levelname)s-%(message)s')
logging.warning('这是一个 Warning 消息')

输出可能是这样的:

18973-WARNING-这是一个 Warning 消息

使用 %(asctime)s 记录日期和时间信息:

import logging

logging.basicConfig(format='%(asctime)s - %(message)s', level=logging.INFO)
logging.info('订单创建成功')
2023-12-01 20:22:05,388 - 订单创建成功

修改时间格式:

import logging

logging.basicConfig(format='%(asctime)s - %(message)s', datefmt='%d-%b-%y %H:%M:%S')
logging.warning('订单创建成功')
2-Dec-12 20:13:11 - 订单创建成功

使用变量

我们还可以使用变量来快速格式化我们的消息:

import logging

name = '羊顶天'

logging.error('%s 摔了一个跟头', name)
ERROR:root: 羊顶天 摔了一个跟头

上面示例中我们使用, %s 参数,