gpt4 book ai didi

python - 在 Python 中忽略来自第三方包的日志消息

转载 作者:行者123 更新时间:2023-11-28 22:42:21 24 4
gpt4 key购买 nike

我的 Python 3 应用程序使用标准日志记录包。我想记录我的代码中的所有信息级消息,但要确保记录忽略第三方包(如请求)发出的所有信息消息。

每次使用 requests.get 之前和之后调用 Logger.setLevel(lvl) 应该可以,但是非常乏味。我想我可以使用装饰器,但有更简单的方法吗?

最佳答案

记录器可以通过它们的点模块名称来识别。如果 loggers are set up correctly,您可以在各个模块中打开和关闭记录器.

高级日志配置示例,不同包具有不同的日志级别:

LOGGING = {
'version': 1,
'disable_existing_loggers': False,

'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
},
'simple': {
'format': '%(levelname)s %(message)s'
},

'request_format': {
'format': '%(levelname)s %(asctime)s %(module)s %(remote_addr)s %(username)s %(request_method)s '
'%(path_info)s %(server_protocol)s" %(http_user_agent)s '
'%(message)s',
},
},

'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse'
},

# Add an unbound RequestFilter.
'request': {
'()': 'django_requestlogging.logging_filters.RequestFilter',
},
},

'handlers': {
'mail_admins': {
'level': 'ERROR',
'filters': ['require_debug_false'],
'class': 'django.utils.log.AdminEmailHandler'
},

'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'simple',
'stream': sys.stdout
},

'rainbow': {
"level": "DEBUG",
"class": "rainbow_logging_handler.RainbowLoggingHandler",
"stream": sys.stderr
},

'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filters': ['request'],
'filename': 'logs/django.log',
'formatter': 'request_format',
},

'sentry': {
'level': 'WARN',
'class': PRODUCTION and 'raven.contrib.django.raven_compat.handlers.SentryHandler' or 'logging.StreamHandler',
},
},
'loggers': {
'django.request': {
'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': True,
},

'django.db.backends': {
'handlers': [],
'level': 'ERROR',
'propagate': True,
},

'sqlalchemy': {
'level': 'ERROR',
'propagate': False,
},

'py.warnings': {
'level': 'ERROR',
'propagate': False,
},

'': {
'level': PRODUCTION and 'WARN' or 'DEBUG',
'handlers': [PRODUCTION and 'sentry' or 'rainbow', 'file'],
},

}
}

关于python - 在 Python 中忽略来自第三方包的日志消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31838187/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com