logging.basicConfig() 是 Python 标准库 logging 模块中的一个函数,用于快速配置日志系统的基本设置。通过该函数,你可以设置日志的输出格式、级别、输出位置等核心参数。
主要参数
level:设置日志级别,低于该级别的日志将被忽略。常用级别包括:
logging.DEBUGlogging.INFOlogging.WARNING(默认级别)logging.ERRORlogging.CRITICAL
format:定义日志的输出格式,常用占位符有:
%(asctime)s:日志时间%(levelname)s:日志级别%(message)s:日志内容%(name)s:日志器名称%(filename)s:文件名%(lineno)d:行号
datefmt:设置%(asctime)s的时间格式,例如'%Y-%m-%d %H:%M:%S'。filename:将日志输出到指定文件(覆盖模式)。filemode:文件打开模式,默认为'a'(追加)。stream:将日志输出到流(如sys.stdout、sys.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()
]
)
使用注意事项
- 仅生效一次:
basicConfig()只能调用一次。多次调用时,后续调用会被忽略(除非force=True,Python 3.8+ 支持)。 - 配置局限性:
basicConfig()适用于简单场景。复杂需求(如多日志器、不同处理器配置)建议使用logging.config.dictConfig()或配置文件。 - 中文编码:写入文件时,建议指定
encoding='utf-8'(Python 3.9+),避免中文乱码。 - 与第三方库共存:若引入其他使用
logging的库,建议通过命名日志器(如logger = logging.getLogger(__name__))避免冲突。
实践建议
- 开发阶段使用
logging.DEBUG,生产环境使用logging.INFO或更高。 - 使用
%(name)s区分不同模块的日志。 - 复杂项目推荐使用配置文件(如 YAML)管理日志设置。
如果需要更详细的配置示例或有特定场景需求,请告诉我!