如何使用dictConfig配置将日志文件保存到子目录中?

时间:2018-12-02 01:26:56

标签: python-3.x logging

我在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上为可执行文件)。

我想做的是将其保存到与可执行文件本身处于同一级别并且已经存在的“ logs”目录中。

我的想法是在日志配置中修改“文件名”属性,但是我不确定这会如何影响使用以下脚本文件:

logger = logging.getLogger(__name__)

是否还需要修改以使其记录到正确的位置?

所需结构:

  • app.exe
  • 日志
    • myfile.log

1 个答案:

答案 0 :(得分:0)

测试后,我最初的想法似乎可以满足我的需求。我只是将目录名称放在配置的“文件名”属性值中的文件名之前。无需修改脚本的记录器行。