2016-07-02 2 views
1

Je vois où je peux voirDjango, certains journaux ne sont pas enregistrés lorsque vous utilisez Celery

logger.exception("hello") est exécuté.

Mais rien n'est enregistré sur la sentinelle ou le fichier.

J'ai les paramètres concernant les journaux comme ci-dessous

LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': True, 
    'filters': { 
     'require_debug_false': { 
      '()': 'django.utils.log.RequireDebugFalse' 
     } 
    }, 
    'formatters': { 
     'verbose': { 
      'format': '[%(asctime)s] %(levelname)s (%(module)s:%(funcName)s:%(lineno)d) %(message)s' 
     }, 
     'simple': { 
      'format': '%(levelname)s %(message)s' 
     }, 
    }, 
    'handlers': { 
     'null': { 
      'level': 'DEBUG', 
      'class': 'logging.NullHandler', 
     }, 
     # Send all messages to console 
     'console': { 
      'level': 'DEBUG', 
      'class': 'logging.StreamHandler', 
      'formatter': 'verbose' 
     }, 
     # Warning messages are sent to admin emails 
     'mail_admins': { 
      'level': 'WARNING', 
      'filters': ['require_debug_false'], 
      'class': 'django.utils.log.AdminEmailHandler', 
     }, 
     # critical errors are logged to sentry 
     'sentry': { 
      'level': 'INFO', 
      'class': 'raven.contrib.django.raven_compat.handlers.SentryHandler', 
     }, 
    }, 
    'loggers': { 
     # This is the "catch all" logger 
     '': { 
      'handlers': ['console', 'sentry'], 
      'level': 'DEBUG', 
      'propagate': False, 
     }, 

     'django.db.backends': { 
      'handlers': ['null'], # Quiet by default! 
      'propagate': False, 
      'level': 'DEBUG', 
     }, 
    } 
    } 

Et je écrire des logs avec

import logging 
logger = logging.getLogger(__name__) 

logger.exception("error") 
logger.info({"error": "foo"}) 

Pourquoi suis-je en train de perdre certains des journaux?
(j'ai suivi le code dans le débogueur et le journal a été exécuté, mais rien dans sentry/fichier journal) ..

+0

Quelle est la valeur du paramètre 'DEBUG'? –

+0

J'ai essayé à la fois Faux et Vrai, même résultat. – eugene

+0

Utilisez-vous céleri dans ce projet par hasard? – solarissmoke

Répondre

1

Le problème est causé par le céleri, qui hijacks the root ('') logger by default et élimine toute logger racine configuré précédemment. Cela signifie que votre configuration est ignorée.

Essayez d'ajouter ce paramètre:

CELERYD_HIJACK_ROOT_LOGGER = False 
+0

oh! esperons que ça marche!. btw, il semble que tous les journaux de céleri précédemment ignorés (?) sont enregistrés. Puis-je conserver l'enregistreur de racine et désactiver les journaux de céleri? – eugene

+0

Vous pouvez définir un '--loglevel' plus élevé sur le travailleur, je suppose. – solarissmoke