2015-09-11 21 views
7

Farklı loggers için farklı DSN'leri desteklemek üzere Django logging'u nasıl yapılandırabilirim? BöyleDjango/Raven/Sentry: Farklı DSN'ler için farklı kaydediciler

şey:

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!') 

cevap

1

1) yaz benim için çalıştı bu şekilde deneyin c ustom işleyici

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) 
)

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) python3.6 django2 ile test Benim için çalıştı hatalarınızı yerde

import logging 
logger = logging.getLogger('sentry2') 
logger.error('yeey!') 

, Log ayarlarındaki günlüğü değiştirin.

İlgili konular