python-3.x - 如何使用 dictConfig 配置将日志文件保存到子目录中?
问题描述
我的 Python 3.6 应用程序中有以下配置:
config = {
"version": 1,
"disable_existing_loggers": False,
"formatters": {
"standard": {
"format": ("[%(asctime)s] %(levelname)s - %(threadName)s - %(name)s - %(message)s")
},
},
"handlers": {
"default": {
"class": "logging.StreamHandler",
"formatter": "standard",
"level": DEFAULT_LOG_LEVEL,
},
"fh": {
"class": "logging.handlers.RotatingFileHandler",
"formatter": "standard",
"level": FILE_LOG_LEVEL,
"filename": "myfile.log",
"maxBytes": 1024*1000, # 1 MB
"backupCount": 20
}
},
"loggers": {
'': {
"handlers": ["default", "fh"],
'level': DEFAULT_LOG_LEVEL,
'propagate': True
}
}
}
这目前有效;但是,它将所有 .log 文件保存到当前工作目录(可执行文件在 Windows 上的位置)。
我想做的是让它保存到“日志”目录中,该目录与可执行文件本身处于同一级别并且已经存在。
我的想法是修改日志配置中的“文件名”属性,但我不确定这会如何影响我使用的脚本文件:
logger = logging.getLogger(__name__)
是否也需要对其进行修改以使其登录到正确的位置?
所需结构:
- 应用程序
- 日志
- 我的文件.log
解决方案
我最初的想法似乎是在测试后做我需要的。我只是将目录名放在配置的“文件名”属性值中的文件名前面。无需修改脚本的记录器行。