python-2.7 - 使用带有可变日志文件名的 dictConfig()
问题描述
我有从另一个模块导入的python脚本的配置字典,如下所示
LOG_CONFIG = {
'version': 1,
'disable_existing_loggers': False,
'loggers': {
'': {
'handlers': ['consoleHandler', 'fileHandler'],
'level': 'DEBUG'
}
},
'handlers': {
'consoleHandler': {
'level': 'INFO',
'formatter': 'consoleFormatter',
'class': 'logging.StreamHandler',
'stream': 'ext://sys.stdout',
},
'fileHandler': {
'level': 'INFO',
'formatter': 'fileFormatter',
'class': 'logging.FileHandler',
'mode': 'w',
}
},
'formatters': {
'fileFormatter': {
'format': '%(asctime)s - %(levelname)s - %(name)s - %(module)s - %(funcName)s - %(message)s',
'datefmt': '%Y-%m-%d %H:%M:%S',
'class': 'logging.Formatter'
},
'consoleFormatter': {
'format': 'UAC_API>> %(levelname)s - %(message)s'
},
},
}
我希望日志文件名是可变的。从文件加载配置时,我使用了:
logging.config.fileConfig(config_file,
defaults={'logfilename': logfullpath},
disable_existing_loggers=False)
logfullpath
日志文件的路径在哪里。
但defaults={'logfilename': logfullpath}
不适用于dictConfig
(与logging.config.fileConfig
只有一个 agument 相比)。有人可以帮我吗?
解决方案
如果有人遇到同样的问题,找到解决方法。由于这LOG_CONFIG
是我扩展的字典,因此可以在下面看到(添加filename:logfullpath
为 的键值对fileHandler
)。然后我用它作为dictConfig
.
LOG_CONFIG['handlers']['fileHandler']['filename'] = logfullpath
logging.config.dictConfig(LOG_CONFIG)
推荐阅读
- sql - TVP 是查询数据库以匹配值列表的正确方法吗?
- kubernetes - DNS 不适用于 K8s 上的一次部署
- c++ - 使用 stackBefore 更改 QGraphicsItem 堆栈顺序
- android - 如何从片段中调用非静态类或如何在静态类中调用非静态函数
- python - 我应该如何为我的 CNN 构建这些栅格输入?
- armadillo - 在稀疏矩阵上使用矢量化时的编译器错误
- c++ - 如何将反转的字符串保存为新字符串?
- python - 评估集群性能
- c++ - 关于 ocilib 错误处理的问题,如何使用 ocilib 正确捕获日志错误?
- ios - 快速将 JSON 字符串数组转换为 NSArray