【问题标题】:How to save log file into subdirectory using dictConfig configuration?如何使用 dictConfig 配置将日志文件保存到子目录中?
【发布时间】:2018-12-02 01:26:56
【问题描述】:

我的 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__)

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

所需结构:

  • app.exe
  • 日志
    • myfile.log

【问题讨论】:

    标签: python-3.x logging


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-04
      • 1970-01-01
      • 1970-01-01
      • 2016-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多