首页 > 解决方案 > 使用带有可变日志文件名的 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 相比)。有人可以帮我吗?

标签: python-2.7logging

解决方案


如果有人遇到同样的问题,找到解决方法。由于这LOG_CONFIG是我扩展的字典,因此可以在下面看到(添加filename:logfullpath 为 的键值对fileHandler)。然后我用它作为dictConfig.

LOG_CONFIG['handlers']['fileHandler']['filename'] = logfullpath

logging.config.dictConfig(LOG_CONFIG)

推荐阅读