首页 > 解决方案 > 如何使用 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__)

是否也需要对其进行修改以使其登录到正确的位置?

所需结构:

标签: python-3.xlogging

解决方案


我最初的想法似乎是在测试后做我需要的。我只是将目录名放在配置的“文件名”属性值中的文件名前面。无需修改脚本的记录器行。


推荐阅读