2015-09-11 12 views
7

मैं विभिन्न loggers के लिए अलग-अलग DSNs का समर्थन करने के लिए Django logging को कैसे कॉन्फ़िगर कर सकता हूं?Django/Raven/Sentry: विभिन्न DSNs के लिए अलग लॉगर्स

कुछ इस तरह:

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

इस तरह से यह मेरे लिए काम किया प्रयास करें

1) लिखें सी ustom हैंडलर

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 के साथ परीक्षण किया लॉग ऑन करें।

संबंधित मुद्दे