2013-09-25 24 views
7

açılıyor ben çalışıyorum hangi bir Django projede kurulum kereviz var. Kereviz günlükleri (celerycam, celerybeat, vs) geri kalan vs kereviz görevleri için günlük ayırmak istiyoruz.Django Kereviz Görev

Kereviz belgelerine dayanarak (http://docs.celeryproject.org/en/latest/userguide/tasks.html#logging) sadece 'celery.task' için bunu yapması gereken bir Django logger tanımlayabilmem gerekir. Ancak, bunu yaptığımda, günlüklerde hiçbir şey görünmez. Genel bir "kereviz" kaydedici oluşturursam, bunun loggerın adıyla ilgili bir şey olabileceğini ima ederek her şey ortaya çıkıyor.

Burada nelerin eksik? Bu işi yapmanın bir yolu var mı yoksa bütün kereviz kütükleri birlikte mi gitmeli? Ne olursa olsun için

, ben False = CELERYD_HIJACK_ROOT_LOGGER belirledik. settings.py içinde

Benim günlüğü kurulumu:

LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': False, 
    'filters': { 
     'require_debug_false': { 
      '()': 'django.utils.log.RequireDebugFalse' 
     } 
    }, 
    'formatters': { 
     'standard': { 
      'format': '%(asctime)s %(levelname)s [%(name)s: %(lineno)s] -- %(message)s', 
      'datefmt': '%m-%d-%Y %H:%M:%S' 
     }, 
    }, 
    'handlers': { 
     'logfile': { 
      'level': 'INFO', 
      'filters': None, 
      'class': 'logging.handlers.RotatingFileHandler', 
      'filename': '/vagrant/logs/logfile.log', 
      'maxBytes': 1024*1024*5, 
      'backupCount': 3, 
      'formatter': 'standard' 
     }, 
     'debug_logfile': { 
      'level': 'DEBUG', 
      'filters': None, 
      'class': 'logging.handlers.RotatingFileHandler', 
      'filename': '/vagrant/logs/debug_logfile.log', 
      'maxBytes': 1024*1024*5, 
      'backupCount': 5, 
      'formatter': 'standard' 
     }, 
     'default_logger': { 
      'level': 'WARNING', 
      'filters': None, 
      'class': 'logging.handlers.RotatingFileHandler', 
      'filename': '/vagrant/logs/default.log', 
      'maxBytes': 1024*1024*5, 
      'backupCount': 2, 
      'formatter': 'standard' 
     }, 
     'celery_logger': { 
      'level': 'DEBUG', 
      'filters': None, 
      'class': 'logging.handlers.RotatingFileHandler', 
      'filename': '/vagrant/logs/celery.log', 
      'maxBytes': 1024*1024*5, 
      'backupCount': 2, 
      'formatter': 'standard' 
     }, 
     'celery_task_logger': { 
      'level': 'DEBUG', 
      'filters': None, 
      'class': 'logging.handlers.RotatingFileHandler', 
      'filename': '/vagrant/logs/celery_tasks.log', 
      'maxBytes': 1024*1024*5, 
      'backupCount': 2, 
      'formatter': 'standard' 
     }, 
    }, 
    'loggers': { 
     '': { 
      'handlers': ['default_logger'], 
      'level': 'WARNING', 
      'propagate': True, 
     }, 
     'django': { 
      'handlers': ['logfile'], 
      'level': 'INFO', 
      'propagate': True, 
     }, 
     'feedmanager': { 
      'handlers': ['logfile', 'debug_logfile'], 
      'level': 'DEBUG', 
      'propagate': True, 
     }, 
     'recipemanager': { 
      'handlers': ['logfile', 'debug_logfile'], 
      'level': 'DEBUG', 
      'propagate': True, 
     }, 
     'menumanager': { 
      'handlers': ['logfile', 'debug_logfile'], 
      'level': 'DEBUG', 
      'propagate': True, 
     }, 
     'celery.task': { 
      'handlers': ['celery_task_logger'], 
      'level': 'DEBUG', 
      'propagate': True, 
     }, 
     'celery': { 
      'handlers': ['celery_logger'], 
      'level': 'DEBUG', 
      'propagate': True, 
     }, 
    } 
} 
+0

celery.tasks veya celery.task – toad013

+1

sayesinde olmak istiyorum ne olduğundan emin olun - Yine izleyin emin. Celery.task için bir logger'ım var ve aynı etkiye celery.tasks denedim. – aravenel

cevap

15

i senin ardından logger adı modülü adı olacaktır bunu yaparken eğer senin bu

from celery.utils.log import get_task_logger 
logger = get_task_logger(__name__) 

yapıyor görevler de tahmin ediyorum, görev Uygulamam denilen bir uygulamadaki tasks.py dosyada ise böylece logger 'MyApp.tasks' adı verilir ve bunu ayarlarınızdan logger 'MyApp.tasks' oluşturmak gerekir.

Az önce yere ateş varsa aynı günlükçüsüne oturum açmak için görevlerin tümü için __name__ yerine farklı bir dize koyabilirsiniz. yani: 'celery.task'

oh

ve işçi loglevel bunu

+1

Bu neredeyse kesinlikle, teşekkürler! İşyerinde en kısa sürede deneyeceğim. Merak etme, ana 'kereviz' kaydedicisi neden bu görev kayıtlarını tutuyor? – aravenel

+1

Evet, bu çalışmayı onaylayabilir, teşekkür ederim! Ana 'kereviz' kaydedicisinin onları neden aldığını hala şaşkın ama ben bununla yaşayabilirim. – aravenel