Django/Raven/Sentry: 不同 DSN 的不同记录器
Django/Raven/Sentry: different loggers for different DSNs
如何配置 Django logging
以支持不同 loggers
的不同 DSN?
像这样:
settings.py
LOGGING = {
..
'handlers': {
'sentry1': {
'level': 'ERROR',
'class': 'raven.contrib.django.handlers.SentryHandler',
'dsn': '<DSN1>',
},
'sentry2': {
'level': 'ERROR',
'class': 'raven.contrib.django.handlers.SentryHandler',
'dsn': '<DSN2>',
},
},
'loggers': {
'sentry1':{
'handlers': ['console', 'sentry1'],
'level': 'ERROR',
'propagate': False,
},
'sentry2':{
'handlers': ['console', 'sentry2'],
'level': 'ERROR',
'propagate': False,
},
}
views.py
import logging
logger = logging.getLogger('sentry2')
logger.error('yeey!')
试试这个对我有用的方法
1) 编写自定义处理程序
from __future__ import absolute_import
import logging
from raven.handlers.logging import SentryHandler
class CustomHandler(SentryHandler):
def __init__(self, *args, **kwargs):
dsn = kwargs.pop('dsn', None)
self.tags = kwargs.pop('tags', None)
logging.Handler.__init__(self, level=kwargs.get('level', logging.NOTSET))
super(CustomHandler, self).__init__(dsn, **kwargs)
2) 更改您的登录设置
LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s '
'%(process)d %(thread)d %(message)s'
},
},
'handlers': {
'sentry1': {
'level': 'ERROR',
'class': 'project.sentry.CustomHandler',
'dsn': '<DSN1>',
},
'sentry2': {
'level': 'ERROR',
'class': 'project.sentry.CustomHandler',
'dsn': '<DSN2>',
},
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'verbose'
}
},
'loggers': {
'sentry1': {
'handlers': ['sentry1'],
'level': 'ERROR',
'propagate': False,
},
'sentry2': {
'handlers': ['sentry2'],
'level': 'ERROR',
'propagate': False,
},
}
}
3) 在任何地方记录您的错误
import logging
logger = logging.getLogger('sentry2')
logger.error('yeey!')
它对我有用,用 python3.6 django2.
测试过
如何配置 Django logging
以支持不同 loggers
的不同 DSN?
像这样:
settings.py
LOGGING = {
..
'handlers': {
'sentry1': {
'level': 'ERROR',
'class': 'raven.contrib.django.handlers.SentryHandler',
'dsn': '<DSN1>',
},
'sentry2': {
'level': 'ERROR',
'class': 'raven.contrib.django.handlers.SentryHandler',
'dsn': '<DSN2>',
},
},
'loggers': {
'sentry1':{
'handlers': ['console', 'sentry1'],
'level': 'ERROR',
'propagate': False,
},
'sentry2':{
'handlers': ['console', 'sentry2'],
'level': 'ERROR',
'propagate': False,
},
}
views.py
import logging
logger = logging.getLogger('sentry2')
logger.error('yeey!')
试试这个对我有用的方法
1) 编写自定义处理程序
from __future__ import absolute_import
import logging
from raven.handlers.logging import SentryHandler
class CustomHandler(SentryHandler):
def __init__(self, *args, **kwargs):
dsn = kwargs.pop('dsn', None)
self.tags = kwargs.pop('tags', None)
logging.Handler.__init__(self, level=kwargs.get('level', logging.NOTSET))
super(CustomHandler, self).__init__(dsn, **kwargs)
2) 更改您的登录设置
LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s '
'%(process)d %(thread)d %(message)s'
},
},
'handlers': {
'sentry1': {
'level': 'ERROR',
'class': 'project.sentry.CustomHandler',
'dsn': '<DSN1>',
},
'sentry2': {
'level': 'ERROR',
'class': 'project.sentry.CustomHandler',
'dsn': '<DSN2>',
},
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'verbose'
}
},
'loggers': {
'sentry1': {
'handlers': ['sentry1'],
'level': 'ERROR',
'propagate': False,
},
'sentry2': {
'handlers': ['sentry2'],
'level': 'ERROR',
'propagate': False,
},
}
}
3) 在任何地方记录您的错误
import logging
logger = logging.getLogger('sentry2')
logger.error('yeey!')
它对我有用,用 python3.6 django2.
测试过