在python中配置root logger

Cha*_*ndu 11 python django logging

我在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',
        },
    }
}
Run Code Online (Sandbox Code Playgroud)

通过这种配置,我希望我的'apps'能够以DEBUG级别登录,而任何其他模块只能记录ERROR及以上级别.但我看到来自其他模块的DEBUG消息.我如何解决它?

Raf*_*afa 8

您是否使用空字符串键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'
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 我遇到了相反的问题:使用“root”它只显示警告及以上内容,而将其设置为空字符串还显示调试和信息消息。 (2认同)