[英]logging.config.dictConfig does not seem to work
此代碼有什么問題? 它將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
這是在尋找相同的問題。 像您一樣,我也解決了問題,但是卻有所不同。 我認為這是值得一提的,因為Google會與其他人合作。
默認的“ root”處理程序不稱為“ root”,它實際上是空白或無。
用None(這是有效的dict密鑰)替換'root'使其適用於所有記錄器,而不僅是“ root”記錄器。
過早發布2秒。
我必須在getLogger調用中顯式調用根記錄器的名稱。 這達到了目的:
logging.config.dictConfig(configDict)
logger = logging.getLogger('root')
logger.handlers
logger.warning("Whatsup")
抱歉!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.