python日志模块【logging】
在 Python 里,logging 模块是一个强大且灵活的日志记录工具,它能帮助你在程序运行时记录不同级别的信息,方便调试、监控和问题排查。下面为你详细介绍 logging 模块的基本使用方法。
1. 基本使用
以下是一个简单的示例,展示了如何使用 logging 模块记录日志:
import logging
# 配置日志记录
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
# 记录不同级别的日志
logging.debug('这是一条调试信息')
logging.info('这是一条普通信息')
logging.warning('这是一条警告信息')
logging.error('这是一条错误信息')
logging.critical('这是一条严重错误信息')
代码解释
import logging:导入logging模块。logging.basicConfig():对日志记录进行配置。level=logging.DEBUG表示将日志级别设置为DEBUG,这意味着所有级别(DEBUG、INFO、WARNING、ERROR、CRITICAL)的日志都会被记录;format='%(asctime)s - %(levelname)s - %(message)s'定义了日志的输出格式,包含时间、日志级别和日志信息。logging.debug()、logging.info()等:用于记录不同级别的日志。
2. 日志级别
logging 模块定义了 5 个日志级别,从低到高分别为:
DEBUG:用于详细的调试信息,通常在开发和调试阶段使用。INFO:用于记录程序运行过程中的普通信息,如程序启动、完成某个任务等。WARNING:用于记录可能会导致问题的情况,但程序仍然可以继续运行。ERROR:用于记录程序运行过程中出现的错误,但不影响程序的整体运行。CRITICAL:用于记录严重的错误,可能会导致程序无法继续运行。
3. 日志输出到文件
除了将日志输出到控制台,还可以将日志输出到文件中。示例如下:
import logging
# 配置日志记录到文件
logging.basicConfig(filename='app.log', level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
# 记录日志
logging.debug('这是一条调试信息,将被记录到文件中')
代码解释
filename='app.log':指定日志文件的名称为app.log。
4. 自定义日志记录器
除了使用默认的日志记录器,还可以创建自定义的日志记录器。示例如下:
import logging
# 创建自定义日志记录器
logger = logging.getLogger('my_logger')
logger.setLevel(logging.DEBUG)
# 创建文件处理器
file_handler = logging.FileHandler('custom.log')
file_handler.setLevel(logging.DEBUG)
# 创建控制台处理器
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)
# 定义日志格式
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)
console_handler.setFormatter(formatter)
# 将处理器添加到日志记录器
logger.addHandler(file_handler)
logger.addHandler(console_handler)
# 记录日志
logger.debug('这是自定义日志记录器的调试信息')
logger.info('这是自定义日志记录器的普通信息')
代码解释
logging.getLogger('my_logger'):创建一个名为my_logger的自定义日志记录器。logging.FileHandler('custom.log'):创建一个文件处理器,将日志记录到custom.log文件中。logging.StreamHandler():创建一个控制台处理器,将日志输出到控制台。logger.addHandler():将处理器添加到日志记录器中。
5. 异常处理中的日志记录
在异常处理中使用日志记录可以帮助你更好地排查问题。示例如下:
import logging
# 配置日志记录
logging.basicConfig(level=logging.ERROR, format='%(asctime)s - %(levelname)s - %(message)s')
try:
result = 1 / 0
except ZeroDivisionError as e:
logging.error('发生除零错误', exc_info=True)
代码解释
exc_info=True:在日志中记录异常的详细信息,包括异常类型和堆栈跟踪。
通过以上介绍,你可以掌握 logging 模块的基本使用方法,根据实际需求灵活配置日志记录。

浙公网安备 33010602011771号