簡體   English   中英

Django Celery運行時更改日志文件

[英]Django Celery change log file on run time

========================最后更新======================== =
我發現芹菜信號worker_process_init.connect(some_function)
這可以讓我在工作者子程序開始運行之前運行我想要的任何功能,就我而言,我可以根據需要更改日志處理程序...

handler = logging.FileHandler(('my%s.log')%current_process().index, 'a')
logger.addHandler(handler)

(我發現的另一個信號-setup_log在我的情況下效率不高。)
++++++++++++++++++++++++++更新+++++++++++++++++++++++ +++
我將handlet從我的settings.py中移出,因為我知道它僅加載一次,所以現在在task.py中對其進行了定義:

def custom_logger(name):
    logger = logging.getLogger(name)
    logger.setLevel(logging.DEBUG)
    handler = logging.FileHandler(('my%s.log')%current_process().index, 'a')
    logger.addHandler(handler)
return logger

和任務,例如:

@tenant_celery.task(base=HandlersImplTenantTask)
@concurrent_task(task_timeout=1)
def add():
    task_id = add.request.id
    l = custom_logger(task_id)
    l.info("task name is -   ADD")
    l.info("my worker id is: %s" % current_process().index)
return 5+7

不是最美觀的解決方案,但它確實可以在運行時更改日志文件。

================================================== ============

我正在Django上運行Celery任務,

我希望每個芹菜工人都寫入不同的日志文件,

但每次都同一個->

例如:worker 1-> myLog1.log,worker 2-> myLog2.log

這是我的settings.py的外觀:

logfile = '%s/%s' % (logdir, APP_NAME + "-" + process_name + '.log')
CELERY_WORKER_LOGFILE = '%s/%s' % (logdir, 'celery_worker.log')

和task.py:

@tenant_celery.task(base=HandlersImplTenantTask)
def get_worker_id():
    logdir = '%s/%s' % (os.curdir, 'log')
    settings.CELERY_WORKER_LOGFILE = '%s/%s-%s.log' % (logdir, 'celery_worker', current_process().index)
    print settings.CELERY_WORKER_LOGFILE
    # print the new log file
    logger.info("HELLO FROM TASK %s", current_process().index)
    #  write to the wrong logfile.

與第二項任務相同。

但是,盡管它為每個任務打印了一個不同的“ LOFFILE”,

它會繼續寫入與其在settings.py中出現的日志相同的日志(!!)。

我的運行命令是:

celery worker -c 2 --broker=amqp://1000:1000@localhost:5672//1000

有什么方法可以(真正)在運行時更改日志文件?

(我不明白Django日志信號是否可以幫助我)

我也找到了這個答案,但對我不起作用。

謝謝

您知道,在運行worker時,可以通過如下參數指定日志文件:

celery -A proj worker -l info -f paht/to/yourfile.log

有關官方文檔的更多信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM