我使用以下代码配置给定的记录器或根记录器:
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
处理程序?
或者,如何为根记录程序设置默认处理程序的格式?
答案 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)
这或多或少解决了我的问题:
/.