Python logging 模块简述

发布时间 2023-06-23 07:37:40作者: 晓枫的春天

Python logging 模块定义了为应用程序和库实现灵活的事件日志记录的函数和类。程序开发过程中,很多程序都有记录日志的需求,并且日志包含的信息有正常的程序访问日志还可能有错误、警告等信息输出,Python 的 logging 模块提供了标准的日志接口,可以通过它存储各种格式的日志,日志记录提供了一组便利功能,用于简单的日志记录用法。

  • 使用 Python Logging 模块的主要好处是所有 Python 模块都可以参与日志记录

  • Logging 模块提供了大量具有灵活性的功能

日志记录函数以它们用来跟踪的事件的级别或严重性命名。下面描述了标准级别及其适用性(从高到低的顺序):
日志等级(level)描述
DEBUG 最详细的日志信息,典型应用场景是 问题诊断
INFO 信息详细程度仅次于DEBUG,通常只记录关键节点信息,用于确认一切都是按照我们预期的那样进行工作
WARNING 当某些不期望的事情发生时记录的信息(如,磁盘可用空间较低),但是此时应用程序还是正常运行的
ERROR 由于一个更严重的问题导致某些功能不能正常运行时记录的信息
CRITICAL 当发生严重错误,导致应用程序不能继续运行时记录的信息

日志级别等级排序:critical > error > warning > info > debug

级别越高打印的日志越少,反之亦然,即

  • debug    : 打印全部的日志( notset 等同于 debug )

  • info     : 打印 info, warning, error, critical 级别的日志

  • warning  : 打印 warning, error, critical 级别的日志

  • error    : 打印 error, critical 级别的日志

  • critical : 打印 critical 级别

案例测试

指定日志输出级别

默认级别

logging.debug("This's debug log info...")
logging.info("This's info log info...")
logging.warning("This's warning log info...")
logging.error("This's error log info...")
logging.critical("This's critical log info...")
'''
WARNING:root:This's warning log info...
ERROR:root:This's error log info...
CRITICAL:root:This's critical log info...
'''

使用 basicconfig() 设置日志级别

logging.debug("This's debug log info...")
logging.info("This's info log info...")
logging.warning("This's warning log info...")
logging.error("This's error log info...")
logging.critical("This's critical log info...")
'''
DEBUG:root:This's debug log info...
INFO:root:This's info log info...
WARNING:root:This's warning log info...
ERROR:root:This's error log info...
CRITICAL:root:This's critical log info...
'''

使用 basicconfig() 设置日志级别和目录

logging.basicConfig(level=logging.DEBUG,filename='loginfo.log')

logging.debug("This's debug log info...")
logging.info("This's info log info...")
logging.warning("This's warning log info...")
logging.error("This's error log info...")
logging.critical("This's critical log info...")

 说明:默认情况下日志落盘是append,如果每次执行程序直接覆写,需要设置mode

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