2016-05-04 49 views
1

セルラーベースのアプリケーションのロガーを設定しようとしています。 コンソールのログ記録は正常に動作します。ただし、ログメッセージは指定されたログファイルに追加されません:celery.logロギング:ロガーはファイルにログを記録せず、コンソールに接続します

  • なぜログメッセージがログファイルに書き込まれないのですか?ここで

は私のロギング設定

# log_config.py  

import sys 

LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': True, 
    'formatters': { 
     'simple': { 
      'format': '%(levelname)s %(message)s', 
      'datefmt': '%y %b %d, %H:%M:%S', 
      }, 
     }, 
    'handlers': { 
     'console': { 
      'level': 'WARN', 
      'class': 'logging.StreamHandler', 
      'stream': sys.stdout, 
      'formatter': 'simple' 
     }, 
     'celery': { 
      'level': 'WARN', 
      'class': 'logging.handlers.RotatingFileHandler', 
      'filename': '/tmp/celery.log', 
      'formatter': 'simple', 
      'backupCount': 5, 
      'maxBytes': 1024 * 1024 * 100, # 100 mb 
     }, 
    }, 
    'loggers': { 
     'celery': { 
      'handlers': ['celery', 'console'], 
      'propagate': True, 
      'level': 'WARN', 
     }, 
    } 
} 

セロリあるとinitializiationログ:

dictConfig(log_config.LOGGING) 
app = Celery('app', 
      broker=env('CELERY_BROKER_URL', 'amqp://'), 
      backend=env('CELERY_BACKEND_URL', 'rpc://'), 
      include='tasks') 

サンプル出力

[2016-05-04 12:32:45,077: WARNING/MainProcess] [email protected] ready. 
[2016-05-04 12:32:47,503: WARNING/Worker-2] [INFO] Running plugin `one` with target `www.example.com` 
[2016-05-04 12:32:47,508: WARNING/Worker-1] [INFO] Running plugin `two` with target `www.example.com` 
[2016-05-04 12:32:47,559: WARNING/Worker-3] [INFO] Running plugin `three` with target `('127.0.0.1', 'example.com')` 
[2016-05-04 12:32:47,559: WARNING/Worker-3] tasks.MySampleTask[31ffe71d-4645-47f2-1237-4c431282ac12]: it works! 

PS:私はDjangoを使用していません。

+0

サンプル出力はどこから得られますか? '単純な'フォーマッタで定義されたフォーマットと一致しません。 – Pedru

+0

- 最初はセロリから直接です。 2行目から4行目は簡単な印刷で行なわれます。最後の行は 'from celery.utils.log import get_task_logger' - >' logger = get_task_logger(__ name__) 'と' logger.warn( 'it works!') 'です。 – Jon

答えて

1

CELERYD_HIJACK_ROOT_LOGGER設定を使用すると、カスタムロガーを使用できます。

app.conf.update(CELERYD_HIJACK_ROOT_LOGGER=False) 

ワーカーを再起動すると、セロリログファイルが生成されます。

this in celery docsについて詳しく読むことができます。

関連する問題