[英]Configuring root logger in python
我在Django設置中有以下日志記錄配置。
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format':
'%(levelname)s|%(asctime)s|%(name)s>> %(message)s',
},
},
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'verbose',
}
},
'loggers': {
'': {
'handlers': ['console'],
'level': 'ERROR',
'propagate': True,
},
'apps': {
'handlers': ['console'],
'level': 'DEBUG',
},
}
}
通過這種配置,我希望我的'apps'能夠以DEBUG級別登錄,而任何其他模塊只能記錄ERROR及以上級別。 但我看到來自其他模塊的DEBUG消息。 我如何解決它?
您是否在LOGGING['loggers']
使用空字符串鍵來匹配根記錄器? 如果是這樣,你可以試試這個。
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format':
'%(levelname)s|%(asctime)s|%(name)s>> %(message)s',
},
},
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'verbose',
}
},
'loggers': {
'apps': {
'handlers': ['console'],
'level': 'DEBUG',
}
},
'root': {
'handlers': ['console'],
'level': 'ERROR'
}
}
我遇到了類似的問題,root logger在INFO
配置了一個級別,但是看到了DEBUG日志消息。
事實證明我不應該設置'propagate': True
對於我在DEBUG
級別的其他記錄器是'propagate': True
,因為那些日志將被傳遞到根記錄器,無論根目錄是什么級別。
所以我對原始問題的猜測是,可能有一些其他模塊的記錄器已打開propagate
。 將disable_existing_loggers
設置為True
可能會解決此問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.