在Sentry 文档中,建议进行以下设置LOGGING
:
LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'root': {
'level': 'WARNING',
'handlers': ['sentry'],
},
'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s '
'%(process)d %(thread)d %(message)s'
},
},
'handlers': {
'sentry': {
'level': 'ERROR', # To capture more than ERROR, change to WARNING, INFO, etc.
'class': 'raven.contrib.django.raven_compat.handlers.SentryHandler',
'tags': {'custom-tag': 'x'},
},
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'verbose'
}
},
'loggers': {
'django.db.backends': {
'level': 'ERROR',
'handlers': ['console'],
'propagate': False,
},
'raven': {
'level': 'DEBUG',
'handlers': ['console'],
'propagate': False,
},
'sentry.errors': {
'level': 'DEBUG',
'handlers': ['console'],
'propagate': False,
},
},
}
所有三个记录器都console
为其处理程序选择 。为什么 Sentry 会处理任何日志?这是因为所有三个记录器都继承自root
记录器,所以设置console
为处理程序会将控制台添加到现有的哨兵记录器?或者是其他东西?
然后,处理程序上的注释sentry
指出“要捕获的不仅仅是 ERROR,请更改为 WARNING、INFO 等”。为什么要更改它来INFO
处理INFO
级别错误?记录器root
已设置WARNING
为最低级别,那么任何处理程序如何向处理程序发送INFO
级别错误sentry
?
例如,如果我在一个类似的文件accounts/models.py
中,我调用
LOGGER = logging.getLogger(__name__)
LOGGER.info('test')
这应该创建一个名为 的记录器accounts.models
,它应该从记录器继承root
。文档说:
当向记录器提供消息时,将消息的日志级别与记录器的日志级别进行比较。如果消息的日志级别达到或超过记录器本身的日志级别,则消息将进行进一步处理。如果没有,该消息将被忽略。
如果从忽略低于以下级别的所有内容的记录器继承,为什么LOGGER.info('test')
在这种情况下会向 Sentry 发送任何内容?LOGGER
root
WARNING