2012-01-05 33 views
0

私はdjango 1.3をDjango-Celery 2.4.2で運用しています。Djangoのロギングによりセロリのデーモンが破損する

django settings.pyファイルでdjangoのログを有効にして以来、セロリのデーモン(celeryd)はもう動かなくなりました。 ロギング機能を削除すると、問題が解決されます。 settings.pyで

マイログコードは次のようになります。

LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': True, 
    'formatters': { 
     'standard': { 
      'format': '%(asctime)s [%(levelname)s] %(name)s: %(message)s' 
     }, 
    }, 
    'handlers': { 
     'write_to_log': { 
      'level':'WARNING', 
      'class':'logging.handlers.RotatingFileHandler', 
      'filename': '/path/to/project/logs/errors.log', 
      'maxBytes': 1024*1024*5, # 5 MB 
      'backupCount': 5, 
      'formatter':'standard', 
     }, 
    }, 
    'loggers': { 
     'django': { 
      'handlers': ['write_to_log'], 
      'level': 'WARNING', 
      'propagate': True 
     } 
    } 
} 

編集: が、私は問題をfixxes LOGGING辞書、前に次のコードを追加しました。誰かがもっときれいな解決策を持っているなら、私は聞きたいと思います。

import sys 
if not "celeryd" in sys.argv: 
    LOGGING = ... 
+2

定義する「セロリデーモン(celerydを)もう実行文句を言いません」。あなたがそれを実行しようとするとどうなりますか? – jpic

答えて

2

celerydは、ルートロガーをハイジャックして構成するため、競合が発生する可能性があります。

はとセロリログハイジャックを無効にしてください:

CELERYD_HIJACK_ROOT_LOGGER=False