Python 通用 Logger 设置 —— 控制台+文件

在 Python 中,我们可能需要将日志同时输出到控制台进行展示,并输出到文件中备用。可以使用 logging 模块来实现日志同时输出到控制台(console)和文件中,并且可以为每个输出设置不同的格式。以下是一个示例代码,展示如何实现这一功能:

示例代码

import logging

# 创建一个 logger
logger = logging.getLogger('my_logger')
logger.setLevel(logging.DEBUG)  # 设置日志级别

# 创建一个文件处理器,用于写入日志文件
file_handler = logging.FileHandler('app.log')
file_handler.setLevel(logging.DEBUG)  # 设置文件日志级别

# 创建一个控制台处理器,用于输出到控制台
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)  # 设置控制台日志级别

# 创建一个文件日志格式器
file_formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler.setFormatter(file_formatter)

# 创建一个控制台日志格式器
console_formatter = logging.Formatter('%(name)s - %(levelname)s - %(message)s')
console_handler.setFormatter(console_formatter)

# 将处理器添加到 logger
logger.addHandler(file_handler)
logger.addHandler(console_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. 创建 Logger

    • 使用 logging.getLogger('my_logger') 创建一个名为 my_logger 的 logger。
    • 设置日志级别为 DEBUG,这样所有级别的日志都会被处理。
  2. 创建文件处理器

    • 使用 logging.FileHandler('app.log') 创建一个文件处理器,日志将写入 app.log 文件。
    • 设置文件处理器的日志级别为 DEBUG,这样所有级别的日志都会写入文件。
  3. 创建控制台处理器

    • 使用 logging.StreamHandler() 创建一个控制台处理器,日志将输出到控制台。
    • 设置控制台处理器的日志级别为 INFO,这样只有 INFO 及以上级别的日志会输出到控制台。
  4. 创建日志格式器

    • 使用 logging.Formatter 创建两个不同的日志格式器,一个用于文件日志,一个用于控制台日志。
    • 文件日志格式包括时间戳、logger 名称、日志级别和日志消息。
    • 控制台日志格式包括 logger 名称、日志级别和日志消息。
  5. 将处理器添加到 Logger

    • 使用 logger.addHandler() 将文件处理器和控制台处理器添加到 logger。
  6. 测试日志

    • 使用不同级别的日志方法(如 logger.debuglogger.info 等)测试日志输出。

输出结果

  • 文件 app.log

    2024-07-14 12:34:56,789 - my_logger - DEBUG - This is a debug message
    2024-07-14 12:34:56,789 - my_logger - INFO - This is an info message
    2024-07-14 12:34:56,789 - my_logger - WARNING - This is a warning message
    2024-07-14 12:34:56,789 - my_logger - ERROR - This is an error message
    2024-07-14 12:34:56,789 - my_logger - CRITICAL - This is a critical message
    
  • 控制台

    my_logger - INFO - This is an info message
    my_logger - WARNING - This is a warning message
    my_logger - ERROR - This is an error message
    my_logger - CRITICAL - This is a critical message
    
posted @ 2025-07-13 22:08  GOKORURI  阅读(324)  评论(0)    收藏  举报