这段代码有什么问题?它将 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")
Run Code Online (Sandbox Code Playgroud)
也没有抛出任何错误,它似乎只是默默地忽略我的配置。
Python 3.6.1
这在搜索相同问题时出现。和你一样,我解决了这个问题,但做法不同。我认为值得一提的是谷歌会向其他人展示它......
默认的“root”处理程序不称为“root”,它实际上是空白的,或者无。
将“root”替换为“None”(这是一个有效的字典键)使其适用于所有记录器,而不仅仅是“root”记录器。