logging.config.dictConfig 似乎不起作用

Hoe*_*gje 4 python logging

这段代码有什么问题?它将 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

Dav*_*ent 5

这在搜索相同问题时出现。和你一样,我解决了这个问题,但做法不同。我认为值得一提的是谷歌会向其他人展示它......

默认的“root”处理程序不称为“root”,它实际上是空白的,或者无。

将“root”替换为“None”(这是一个有效的字典键)使其适用于所有记录器,而不仅仅是“root”记录器。