这段代码有什么问题?它将 Whatsup 输出到 stdOut,而没有输出到/tmp 中的文件。它创建了文件,但没有写入任何内容,即使在记录数据负载 ('w'*20000) 时也不写入。我检查后似乎也没有指定任何处理程序。
>>> logger.handlers
[]
>>> logger.warning("Whatsup")
Whatsup
>>>
import logging
import logging.config
import multiprocessing
import threadfilter
VERBOSE_LOGGING = 1
directory = '/tmp/'
configDict = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'detailed': {
'class': 'logging.Formatter',
'format': '%(asctime)s - %(levelname)s =%(threadName)s= - Completer: %(message)s'
}
},
'handlers': {
'fileH': {
'class': 'logging.FileHandler',
'filename': '%s/ZZZZZZZZZZ_dispatcher_jobComplete3r.log' % (directory),
'formatter': 'detailed'
}
},
'loggers': {
'root': {
'handlers': ['fileH'],
'level': VERBOSE_LOGGING
}
}
}
logging.config.dictConfig(configDict)
logger = logging.getLogger()
logger.handlers
logger.warning("Whatsup")
也没有抛出错误,它似乎只是默默地忽略我的配置。
python 3.6.1
最佳答案
这出现在寻找同样的问题。和你一样,我解决了它,但做得不同。我认为值得一提,因为谷歌会为其他人提供...
默认的“root”处理程序不称为“root”,它实际上是空白或无。
用 None (这是一个有效的字典键)替换 'root' 使其适用于所有记录器,而不仅仅是“root”记录器。
关于python - logging.config.dictConfig 似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45167874/