簡體   English   中英

在python中配置root logger

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

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