0
ログに使用するのと同じハンドラの中で、Celeryという非同期関数からログgeneratdを収集する方法を見つけようとしています'非セロリ' django関数「通常の」Djangoログと同じ場所にCeleryログを取得するDjangoフォーマッタでログと書式設定
私は、ログに各3秒送っダミー関数を作成している:私もこのような何かを試してみました
をfrom celery.decorators import periodic_task
from datetime import timedelta
@periodic_task(run_every=timedelta(seconds=3))
def every_3_seconds():
logr.debug("Hello world: Running (debug) periodic task!")
logr.info("Hello world: Running (info) periodic task!")
:
clogger = get_task_logger(__name__) # Celery logger
@periodic_task(run_every=timedelta(seconds=3))
def every_3_seconds():
clogger.debug("HelloCelery: Running (debug) periodic task!")
clogger.info("HelloCelery: Running (info) periodic task!")
ログの設定は(私の以前の試みですコメント)されています:
CELERYD_HIJACK_ROOT_LOGGER = False
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'console': {
'class': 'logging.StreamHandler',
'formatter': 'verbose',
},
},
'formatters': {
'verbose': {
'format': 'HOPLA123 %(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
}
},
'loggers': {
'': {
'handlers': ['console'],
'level': os.getenv('DJANGO_LOG_LEVEL', 'DEBUG'),
},
# 'django': {
# 'handlers': ['console'],
# 'level': os.getenv('DJANGO_LOG_LEVEL', 'DEBUG'),
# },
# # Logger for the myappApp
# # Use: logr = logging.getLogger(__name__) in myappApp
# # logr.debug("....")
# 'myappApp': {
# 'handlers': ['console'],
# 'level': os.getenv('DJANGO_LOG_LEVEL', 'DEBUG'),
# 'propagate': False, # To fix duplicate log issue.
# },
# # Default Python Logger
# 'root': {
# 'handlers': ['console'],
# 'level': os.getenv('DJANGO_LOG_LEVEL', 'DEBUG'),
# },
# 'celery': {
# 'handlers': ['console'],
# 'level': os.getenv('DJANGO_LOG_LEVEL', 'DEBUG'),
# 'propagate': True,
# },
},
}
私はスーパブルの各ログを出力するスーパーバイザ設定を持っています
何のログファイルがない場合:電子ファイル:セロリドキュメントに指定されているセロリ関数内
[program:gunicorn_django] environment=PYTHONPATH=/opt/myapp/myappServer/myappServer command = /opt/myapp/venv/bin/gunicorn wsgi -b 0.0.0.0:8000 --timeout 90 --access-logfile /dev/stdout --error-logfile /dev/stderr directory = /opt/myapp/myappServer user = root autostart=true autorestart=true stdout_logfile=/var/log/gunicorn.log stderr_logfile=/var/log/gunicorn.err [program:redis] command=redis-server autostart=true autorestart=true stdout_logfile=/var/log/redis.log stderr_logfile=/var/log/redis.err [program:django-celery] command=/opt/myapp/venv/bin/python ./manage.py celery --app=myappServer.celeryapp:app worker -B --loglevel=INFO directory=/opt/myapp/myappServer numprocs=1 stdout_logfile=/var/log/celery.log stderr_logfile=/var/log/celery.err autostart=true autorestart=true startsecs=10
マイこんにちはログは、/var/log/celery.errにログインしていますstderrが使用されます。
私は主に(正しくその後LogStashインスタンスによって解釈されるために)冗長フォーマッタでフォーマットされるように、/var/log/gunicorn.logでそれらを持っていると思います。私のロガーの定義に何か間違っていますか?
ご自身の回答を承認済みとしてマークすることができます。 –