推荐答案
// www.javascriptcn.com code example
import logging
# 创建日志记录器
logger = logging.getLogger('my_logger')
logger.setLevel(logging.DEBUG)
# 创建控制台处理器并设置日志级别
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.DEBUG)
# 创建文件处理器并设置日志级别
file_handler = logging.FileHandler('app.log')
file_handler.setLevel(logging.ERROR)
# 创建日志格式器
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
# 将格式器添加到处理器
console_handler.setFormatter(formatter)
file_handler.setFormatter(formatter)
# 将处理器添加到日志记录器
logger.addHandler(console_handler)
logger.addHandler(file_handler)
# 记录日志
logger.debug('This is a debug message')
logger.info('This is an info message')
logger.warning('This is a warning message')
logger.error('This is an error message')
logger.critical('This is a critical message')本题详细解读
1. 创建日志记录器
首先,使用 logging.getLogger('my_logger') 创建一个日志记录器。'my_logger' 是日志记录器的名称,可以根据需要自定义。通过 logger.setLevel(logging.DEBUG) 设置日志记录器的级别为 DEBUG,这意味着所有级别的日志消息都会被记录。
2. 创建处理器
处理器决定了日志消息的输出位置。常见的处理器有 StreamHandler(输出到控制台)和 FileHandler(输出到文件)。每个处理器都可以设置不同的日志级别,例如 console_handler.setLevel(logging.DEBUG) 和 file_handler.setLevel(logging.ERROR)。
3. 创建日志格式器
格式器用于定义日志消息的输出格式。logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') 创建了一个格式器,其中 %(asctime)s 表示时间戳,%(name)s 表示日志记录器的名称,%(levelname)s 表示日志级别,%(message)s 表示日志消息。
4. 将格式器添加到处理器
通过 console_handler.setFormatter(formatter) 和 file_handler.setFormatter(formatter),将格式器分别添加到控制台处理器和文件处理器。
5. 将处理器添加到日志记录器
使用 logger.addHandler(console_handler) 和 logger.addHandler(file_handler),将处理器添加到日志记录器中。这样,日志记录器就可以将日志消息发送到不同的处理器。
6. 记录日志
最后,使用 logger.debug()、logger.info()、logger.warning()、logger.error() 和 logger.critical() 记录不同级别的日志消息。根据设置的日志级别,这些消息会被输出到控制台或文件中。
通过以上步骤,你可以灵活地配置 Python 中的日志记录器,以满足不同的日志记录需求。