2017-07-18 206 views
0

这段代码有什么问题?它打印出stdOut的Whatsup,而不是/ tmp中的文件。它创建文件,但是没有任何文件写入它,甚至没有记录数据加载('w'* 20000)。在我检查后,似乎没有任何指定的处理程序。logging.config.dictConfig似乎不工作

>>> 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

回答

0

2秒过早发布。

我不得不在我的getLogger调用中明确地调用根记录器的名称。 这样做绝招:

logging.config.dictConfig(configDict) 
logger = logging.getLogger('root') 
logger.handlers 
logger.warning("Whatsup") 

对不起!