2017-07-18 144 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") 

對不起!