用Python的logging库记录日志

发布时间:2024年01月16日

Python的logging模块提供了一种灵活可配置的日志记录系统,可用于监测程序运行时的信息,方便开发者进行故障排查和性能优化。

下面的代码配置了一个简单的日志记录器,通过logging库记录程序运行日志,其中,logging库包含了五种日志级别,并按照一定格式 format 将日志信息保存到指定文件中 example.log,我们逐一展开介绍日志的这些内容。

# 配置日志记录器
logging.basicConfig(filename='example.log', 
                    level=logging.INFO,
                    format='%(asctime)s [%(levelname)s]: %(message)s')

# 记录不同级别的日志
logging.debug('This is a debug message')
logging.info('This is an info message')
logging.warning('This is a warning message')
logging.error('This is an error message')
logging.critical('This is a critical message')


配置日志记录器

logging 库允许通过配置文件或编程方式配置日志记录系统,以适应不同的应用场景,配置日志记录器通过 logging.basicConfig()进行,这里仅介绍简单基础的配置参数(如下所示),更多的配置参数及功能可以自行探索。

filename: StrPath

如果没有指定该参数,则记录器默认会将日志输出打印到控制台。

当指定了该参数后,会将日志保存到相应路径的文件内,并可以通过filemode: str指定文件打开模式,若无指定模式,则默认为追加模式 a(有同名文件则追加新日志,无则新建)。

format: str

指定日志消息的字符串格式。

例如上面的代码例子:format='%(asctime)s [%(levelname)s]: %(message)s',其中 '%(asctime)s' 表示日志记录的时间,%()s表示将asctime插入到括号中并格式化为字符串,'%(levelname)s' 表示日志级别,'%(message)s' 表示日志消息的内容,具体的字符串格式可以根据需求进行定制。

level: _Level

指定一个日志级别,只有达到该级别或更高级别的日志消息才会被记录,以此来控制日志的详细程度。

例如:设置了 level=logging.WARNING,则只会记录 WARNING、ERROR、CRITICAL级别的日志,而忽略 DEBUG、INFO 级别的日志。

stream: SupportsWrite[str]

将日志消息输出到流,该参数与 filename 参数相冲突,若同时设置了两个相冲突的参数,则 stream 参数自动被忽略。

记录不同级别的日志

logging 模块定义了五种日志级别,包括 DEBUG、INFO、WARNING、ERROR 和 CRITICAL。日志级别用于指示日志消息的严重程度,在配置日志记录器时,可以有选择地控制输出的详细程度。

不同日志级别的差异:

  1. DEBUG:调试信息,用在开发和调试阶段追踪代码执行过程中的详细信息,不应该在生产环境中使用;
  2. INFO:程序正常运行时的信息,用于生产环境中输出一般性的运行时信息,以判断程序是否按预期进行工作;
  3. WARNING:潜在的问题或不太常见的情况信息;
  4. ERROR:程序中发生的错误,但不一定导致程序终止;
  5. CRITICAL:程序中比较严重的错误信息,通常会终止程序。

如上面的代码例子所示,通过调用 logging.debug、logging.info、logging.warning、logging.error、logging.critical 可以记录不同级别的日志消息。这些消息将根据记录器的配置被写入到文件 ‘example.log’ 中。

文章来源:https://blog.csdn.net/Linshaodan520/article/details/135622616
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。