Python Logging

logging.basicConfig() 是 Python 标准库 logging 模块中的一个函数,用于快速配置日志系统的基本设置。通过该函数,你可以设置日志的输出格式、级别、输出位置等核心参数。

主要参数

  1. level:设置日志级别,低于该级别的日志将被忽略。常用级别包括:
  • logging.DEBUG
  • logging.INFO
  • logging.WARNING(默认级别)
  • logging.ERROR
  • logging.CRITICAL
  1. format:定义日志的输出格式,常用占位符有:
  • %(asctime)s:日志时间
  • %(levelname)s:日志级别
  • %(message)s:日志内容
  • %(name)s:日志器名称
  • %(filename)s:文件名
  • %(lineno)d:行号
  1. datefmt:设置 %(asctime)s 的时间格式,例如 '%Y-%m-%d %H:%M:%S'
  2. filename:将日志输出到指定文件(覆盖模式)。
  3. filemode:文件打开模式,默认为 'a'(追加)。
  4. stream:将日志输出到流(如 sys.stdoutsys.stderr),与 filename 互斥。

示例代码

以下是几种常见用法:

import logging

# 1. 基本配置:控制台输出,默认级别 WARNING
logging.basicConfig(level=logging.INFO)

# 2. 自定义格式:包含时间、级别、消息
logging.basicConfig(
    format='%(asctime)s - %(levelname)s - %(message)s',
    level=logging.DEBUG
)

# 3. 输出到文件
logging.basicConfig(
    filename='app.log',
    level=logging.ERROR,
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)

# 4. 同时输出到文件和控制台(需结合 handlers)
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    handlers=[
        logging.FileHandler("app.log"),
        logging.StreamHandler()
    ]
)

使用注意事项

  1. 仅生效一次basicConfig() 只能调用一次。多次调用时,后续调用会被忽略(除非 force=True,Python 3.8+ 支持)。
  2. 配置局限性basicConfig() 适用于简单场景。复杂需求(如多日志器、不同处理器配置)建议使用 logging.config.dictConfig() 或配置文件。
  3. 中文编码:写入文件时,建议指定 encoding='utf-8'(Python 3.9+),避免中文乱码。
  4. 与第三方库共存:若引入其他使用 logging 的库,建议通过命名日志器(如 logger = logging.getLogger(__name__))避免冲突。

实践建议

  • 开发阶段使用 logging.DEBUG,生产环境使用 logging.INFO 或更高。
  • 使用 %(name)s 区分不同模块的日志。
  • 复杂项目推荐使用配置文件(如 YAML)管理日志设置。

如果需要更详细的配置示例或有特定场景需求,请告诉我!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注