2017-08-18 20 views
0

Ich habe eine Menge Fragen zu diesem Thema auf SO, aber die meisten Fragen fehlen die Parameter oder die Implementierungsmethoden. Also, ich bin nicht in der Lage, dies zu debuggen.Sellerie Anmelden Django

Meine einfache Anforderung ist, ich möchte alle (Django und Sellerie) Nachrichten in einer einzigen Datei protokollieren. Das ist mein LOGGINGdict in settings.py

LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': False, 
    'formatters': { 
     'standard': { 
      'format': '%(asctime)s [%(levelname)s] [%(filename)s:%(lineno)s - %(funcName)s() ] %(name)s: %(message)s' 
     }, 
    }, 
    'handlers': { 
     'default': { 
      'level': 'INFO', 
      'formatter': 'standard', 
      'class': 'logging.handlers.TimedRotatingFileHandler', 
      'filename': 'logger.log', 
      'when': 'midnight', 
      'interval': 1 
     } 
    }, 
    'loggers': { 
     '': { 
      'handlers': ['default'], 
      'level': 'INFO', 
      'propagate': False 
     } 
    } 
} 
CELERYD_HIJACK_ROOT_LOGGER = False 

Dann habe ich diese Funktion definiert:

@shared_task 
def tester(): 
    import logging 
    logging.info("Log this!!") 

tester() wird in die Protokolldatei zu schreiben.

tester.delay() schreibt nicht in die Protokolldatei.

Was vermisse ich in dieser einfachen Sache?

+0

Haben Sie versucht, diese [one] (https://stackoverflow.com/questions/13366312/django-celery-logging-best-practice) –

+0

@ArpitSolanki, Ja ich habe es versucht, es funktioniert nicht. Ich bin sicher, da ist etwas offensichtlich, dass ich hier vermisse. – harman786

+0

Ihre Logging-Konfiguration enthält keinen Handler für Sellerie. Versuchen Sie, das von dem Link, den ich gepostet habe, zu sehen und zu sehen, ob es funktioniert –

Antwort

0

Wenn Sie Ihre Standard-Protokollebene zu definieren, verwenden Sie den Root-Schlüssel in der LOGGING dict:

... 
'root': { 
    'handlers': ['default'], 
    'level': 'DEBUG' 
}, 
'loggers': {...} 
.... 

In der Theorie ‚‘ als ein Schlüssel des Logger sollte auch funktionieren, aber ich habe es nicht gesehen In einer Weile und ich weiß zumindest in einem meiner Projekte hat es nicht wie erwartet funktioniert.

Siehe https://docs.python.org/2/library/logging.config.html#dictionary-schema-details