注意我知道this answer但这对我不起作用,我希望有一个完整的,独立的工作示例。
我正在尝试将logging.basicConfig
替换为Python(2.7)中的dictConfig
我的理解是basicConfig
只是设置了根记录器:所以我试图对dictConfig
做同样的事情。也就是说,使用处理程序设置根记录器,然后我的应用程序中的所有记录器将向上传播到根记录器。
以下代码段中缺少什么?行为是创建了日志文件,但没有输出。 (我尝试了各种设置级别的组合,但似乎没有帮助)
import logging
log_dict = {
'loggers': {
'root': {
'handlers': ['file_handler']
}
},
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'file_handler': {
'filename': 'c:/mylogfile.log',
'class': 'logging.FileHandler'
}
}
}
logging.config.dictConfig(log_dict)
logging.info('THIS IS A TEST')
logging.shutdown()
exit()
答案 0 :(得分:4)
您发布的配置存在一些问题:
RealmResults.load()
的记录器不是根记录器。根记录器的名称为'root'
,通常使用''
条目外部 'root'
配置进行更好的配置,如this中所述记录文档的一部分:记录器 - 相应的值将是......
...
root - 这将是根记录器的配置。 ...
'loggers'
,这意味着WARNING
消息将不会显示。答案 1 :(得分:3)
以下代码对我来说非常适合:
import logging
import logging.config
log_dict = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'standard': {
'format': '%(asctime)s [%(levelname)s] %(name)s: %(message)s'
},
},
'handlers': {
'default': {
'level': 'INFO',
'formatter': 'standard',
'class': 'logging.StreamHandler',
},
'file_handler': {
'level': 'INFO',
'filename': '/tmp/mylogfile.log',
'class': 'logging.FileHandler',
'formatter': 'standard'
}
},
'loggers': {
'': {
'handlers': ['file_handler'],
'level': 'INFO',
'propagate': True
},
}
}
logging.config.dictConfig(log_dict)
logging.info("test")
事实上,它基于上面提到的答案