私はログを次のように設定しています:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'mail_admins': {
'level': 'INFO',
'class': 'common.handlers.SuperAdminEmailHandler'
},
'console': {
'level': 'INFO',
'class': 'logging.StreamHandler'
}
},
'loggers': {
'': {
'handlers': ['console'],
'level': 'INFO',
'propagate': True,
},
'django.request': {
'handlers': ['console'],
'level': 'ERROR',
'propagate': True,
},
},
}
とありCELERYD_HIJACK_ROOT_LOGGER = False
ます。私もこのタスクを持っています:
@periodic_task(run_every=crontab())
def test_logging():
import logging
print('running test_logging')
logging.info("Here's an info message", extra = {
'tell_admins': True, 'email_content': 'Additional content'
})
logging.error("Here's an error message")
test_logging を直接呼び出すテスト URL があります。その URL にアクセスすると、次の出力が表示されます。
running test_logging
Here's an info message
Here's an error message
[05/Jul/2013 11:07:27] "GET /test/ HTTP/1.1" 200 7
まさに私が期待するものです。ただし、同じ関数がセロリを介して実行されると、次のようになります。
Scheduler: Sending due task scheduler.tasks.test_logging (scheduler.tasks.test_logging)
running test_logging
Here's an error message
情報メッセージはどこへ行った?! 別のセロリ固有のロガーを追加してみました:
'celery': {
'handlers': ['console'],
'level': 'INFO',
'propagate': True,
},
今、私はセロリからこれを見ます:
running test_logging
running test_logging
Here's an error message
Task scheduler.tasks.test_logging[271b8a4a-0c04-4391-81c5-5b009d70b08d] succeeded in 0.00929498672485s: None
まだ情報メッセージはありません。それを取り戻す理由と方法について何か考えはありますか?