Python通过logging.config.fileConfig()配置日志

本文介绍了Python如何通过logging.config.fileConfig从配置文件管理日志,包括配置文件的创建、logger、handler和formatter的设置。讨论了如何避免配置错误,如'module 'logging' has no attribute 'config''的问题,并提供了参考资料链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、简介

Python添加配置的方式有好几种,这里只介绍通过config文件方式,配置log日志。相对于直接在文件中配置日志,这种配置方式可以将日志配置和代码分离,方便代码的维护和日志管理。

2、步骤

新建配置文件logging.conf,用于存放logging配置文件的信息。

[loggers]
# 配置logger信息。必须包含一个名字叫做root的logger,当使用无参函数logging.getLogger()时,默认返回root这个logger,其他自定义logger可以通过 logging.getLogger("fileAndConsole") 方式进行调用
keys=root,file,fileAndConsole
[handlers]
# 定义声明handlers信息。
keys=fileHandler,consoleHandler
[formatters]
# 设置日志格式
keys=simpleFormatter
[logger_root]
# 对loggers中声明的logger进行逐个配置,且要一一对应,在所有的logger中,必须制定lebel和handlers这两个选项,对于非roothandler,还需要添加一些额外的option,其中qualname表示它在logger层级中的名字,在应用代码中通过这个名字制定所使用的handler,即 logging.getLogger("fileAndConsole"),handlers可以指定多个,中间用逗号隔开,比如handlers=fileHandler,consoleHandler,同时制定使用控制台和文件输出日志
level=DEBUG
### Python `logging.config` 使用方法及配置示例 #### fileConfig 方法简介 通过 `fileConfig()` 可以从外部配置文件加载日志设置。此方法接受两个主要参数:一个是配置文件路径,另一个是可选的关键字参数,默认值通常不需要更改[^2]。 ```python import logging.config # 加载配置文件并初始化日志记录器 logging.config.fileConfig('logging.ini') logger = logging.getLogger('root') # 记录一条消息 logger.info("This is an info message.") ``` 这种方法适合于希望将日志配置分离到独立文件中的场景,便于管理和维护不同环境下的日志级别、格式化样式等属性[^4]。 #### dictConfig 方法详解 对于更复杂的配置需求,则可以采用基于字典对象的方式来进行配置——即 `dictConfig()` 函数。它允许开发者直接在代码内部构建完整的日志系统结构描述,并传递给该函数来应用这些设定[^1]。 下面是一个简单的例子展示如何利用 YAML 文件作为源数据并通过 Python 的 `yaml` 库解析成字典再传入 `dictConfig()`: ```python import logging.config import yaml import os class Logger(): def __init__(self, logger_name=''): self.logger_name = logger_name cur_dir = os.path.dirname(__file__) log_conf_path = os.path.join(cur_dir, 'logconf', 'trflog.yaml') with open(log_conf_path, 'r', encoding="utf8") as f: config_dict = yaml.safe_load(f.read()) # 初始化日志配置 logging.config.dictConfig(config_dict) def get_logger(self): return logging.getLogger(self.logger_name) if __name__ == "__main__": my_logger = Logger().get_logger() my_logger.error("An error occurred!") ``` 这段代码展示了怎样封装一个类用于管理多个模块共享的日志实例,同时也体现了灵活调整日志行为的能力[^3]。 #### 日志配置建议 为了确保项目中所有组件都能正确访问所需的日志设施,在应用程序启动阶段尽早执行一次全局性的日志初始化操作是非常重要的。特别是当使用相对路径指定日志输出位置时,这一点尤为重要,因为它能防止因工作目录变化而导致错误的日志存储地点。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值