配置root记录器的格式

时间:2019-01-25 13:17:46

标签: python logging

我使用以下代码配置给定的记录器或根记录器:

def configure_logging(level='INFO', logger=None):
    """Configures a simple console logger with the givel level"""
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    console = logging.StreamHandler()
    console.setFormatter(formatter)
    console.setLevel(level)
    logger = logger or logging.getLogger()  # either the given logger or the root logger
    logger.setLevel(level)
    logger.addHandler(console)

然后在配置根记录器时复制记录消息。看来新配置的console处理程序和默认处理程序对于根记录器都是活动的。

如何禁用/删除根记录程序的默认处理程序,并专门启用console处理程序?

或者,如何为根记录程序设置默认处理程序的格式?

2 个答案:

答案 0 :(得分:0)

日志记录模块具有默认设置“内置”。如果您只想更改根记录器的格式,则可以使用dictConfig并从那里继续进行自定义。

这是我的记录器配置中的摘录

 cfg = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'standard': {
            'format': _format
        },
    },
    'handlers': {},
    'loggers': {
        '': {
            'handlers': [],
            'level': level.upper(),
            'propagate': True

        }
    }
}

if console:
    cfg['handlers']['console'] = {
        'class': 'logging.StreamHandler',
        'level': level.upper(),
        'formatter': 'standard',
    }
    # noinspection PyUnresolvedReferences
    cfg['loggers']['']['handlers'].append('console')

答案 1 :(得分:0)

这或多或少解决了我的问题:

/.