如何防止在這樣的應用程序中重複芹菜日誌?防止重複的芹菜記錄
# test.py
from celery import Celery
import logging
app = Celery('tasks', broker='redis://localhost:6379/0')
app.logger = logging.getLogger("new_logger")
file_handler = logging.handlers.RotatingFileHandler("app.log", maxBytes=1024*1024, backupCount=1)
file_handler.setFormatter(logging.Formatter('custom_format %(message)s'))
app.logger.addHandler(file_handler)
@app.task
def foo(x, y):
app.logger.info("log info from foo")
我開始與應用:celery -A test worker --loglevel=info --logfile celery.log
然後我會FOO與python -c "from test import foo; print foo.delay(4, 4)"
這將導致「日誌從富信息」顯示在兩個celery.log
和app.log
運行。
這裏是app.log內容:
custom_format log info from foo
這裏是celery.log內容:
[2017-07-26 21:17:24,962: INFO/MainProcess] Connected to redis://localhost:6379/0
[2017-07-26 21:17:24,967: INFO/MainProcess] mingle: searching for neighbors
[2017-07-26 21:17:25,979: INFO/MainProcess] mingle: all alone
[2017-07-26 21:17:25,991: INFO/MainProcess] [email protected] ready.
[2017-07-26 21:17:38,224: INFO/MainProcess] Received task: test.foo[e2c5e6aa-0d2d-4a16-978c-388a5e3cf162]
[2017-07-26 21:17:38,225: INFO/ForkPoolWorker-4] log info from foo
[2017-07-26 21:17:38,226: INFO/ForkPoolWorker-4] Task test.foo[e2c5e6aa-0d2d-4a16-978c-388a5e3cf162] succeeded in 0.000783085000876s: None
我認爲刪除從Python代碼自定義記錄器處理程序,但我不只想使用celery.log,因爲它不支持旋轉文件。我考慮用--logfile /dev/null
開始芹菜,但是我會放鬆在app.log
沒有出現的混合和其他日誌。
我可以阻止「foo的日誌信息」出現在celery.log
?鑑於我從頭開始創建記錄器,並且只將日誌記錄設置爲app.log
爲什麼「從foo記錄信息」出現在celery.log
中?
是否可以通過RotatingFileHandler記錄芹菜MainProcess和工作人員日誌(例如Connected to redis://localhost:6379/0
)(例如,去我的app.log
)?