logging.basicConfig()
是 Python 标准库 logging
模块中的一个函数,用于快速配置日志系统的基本设置。通过该函数,你可以设置日志的输出格式、级别、输出位置等核心参数。
主要参数
level
:设置日志级别,低于该级别的日志将被忽略。常用级别包括:
logging.DEBUG
logging.INFO
logging.WARNING
(默认级别)logging.ERROR
logging.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)管理日志设置。
如果需要更详细的配置示例或有特定场景需求,请告诉我!