【问题标题】:Adding FileHandler after creating logger using dictConfig()使用 dictConfig() 创建记录器后添加 FileHandler
【发布时间】:2020-06-11 22:55:18
【问题描述】:

是否可以在使用logging_config dict 创建记录器后添加处理程序?

具体来说,我想添加一个 FileHandler 以在运行脚本时设置特定参数时将错误输出保存到文件中。我在logging_config dict 中设置了 FileHandler,但不知道如何应用它。

我认为它可能类似于logger.addHandler(logging_config['handlers']['save_error']),但没有奏效。

我正在使用以下内容创建我的记录器:

logging.config.dictConfig(logging_config)
logger = logging.getLogger()

这是 logging_config 字典:


{
    'version': 1,
    'formatters': {
        'default': {
            'format': '%(asctime)s - %(levelname)s - %(threadName)s - %(message)s',
        },
    },
    'handlers': {
        'default': {
            'formatter': 'default',
            'class': 'logging.StreamHandler',
            'stream': 'ext://sys.stdout',
            'level': 'DEBUG',
        },
        'save_error': {
            'formatter': 'default',
            'class': 'logging.FileHandler',
            'filename': '/var/log/app.log',
            'mode': 'a',
            'level': 'ERROR',
        }
    },
    'root': {
        'formatter': 'default',
        'handlers': ['default'],
    },
}

【问题讨论】:

    标签: python logging


    【解决方案1】:

    你应该可以做这样的事情:

    if __name__ == '__main__':
        if specific_argument_present(sys.argv):
           logging_config['root']['handlers'].append('save_error')
        logging.config.dictConfig(logging_config)
        #then the rest of your code
    

    【讨论】:

      猜你喜欢
      • 2013-12-14
      • 2012-05-13
      • 1970-01-01
      • 1970-01-01
      • 2011-08-18
      • 1970-01-01
      • 1970-01-01
      • 2021-12-16
      • 1970-01-01
      相关资源
      最近更新 更多