簡體   English   中英

logging.config.dictConfig似乎不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM