使用python/celery/rabbitMQ进行日志记录

2024-03-29 10:57:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找跟踪我的工人和队列的最佳方法,我正在研究日志记录。在

我在celery documentation中看到了建议设置日志记录的示例,如下所示:

from celery.utils.log import get_task_logger logger = get_task_logger(__name__) @app.task def add(x, y): logger.info('Adding {0} + {1}'.format(x, y)) return x + y

日志文件放在哪里?日志文件中还存储了哪些信息?只是包含在记录器信息功能?在

日志文件存储的是工人返回的结果,还是分开的?在


Tags: 文件方法from信息示例taskget队列
1条回答
网友
1楼 · 发布于 2024-03-29 10:57:16

日志文件放在哪里?

我看你没有FileHandlers。这意味着记录器将消息写入控制台。在

让我们检查一下。这里的例子任务.py公司名称:

# celery 4.0.2
@celery.task(name='add')
def add(x, y):
    logger.info('Adding {0} + {1}'.format(x, y))
    return x + y


app = celery.Celery(
    __name__,
    broker='redis://localhost:6379/0',
    backend='redis://localhost:6379/0',
)

app.conf.beat_schedule = {
    # run task each 2 seconds
    'add-every-2-seconds': {
        'task': 'add',
        'schedule': 2.0,
        'args': (1, 2)
    },
}

运行Celery(celery worker -A tasks.app loglevel=info beat)并检查控制台。你会看到这样的景象:

^{pr2}$

这意味着记录器工作正常,可以写下我们的信息。现在让我们尝试为我们的任务添加FileHandler

logger = get_task_logger(__name__)
task_handler = FileHandler('task.log')
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

task_handler.setFormatter(formatter)
logger.addHandler(task_handler)

运行Celery并检查存储tasks.py的文件夹。您应该看到新文件(tasks.log)。内容示例:

2017-04-08 18:35:02,052 - tasks - INFO - Adding 1 + 2
...

日志文件是否存储工人返回的结果?

默认情况下,信息只打印到控制台。但是您可以注册特定的记录器、处理程序并使用自定义任务/加载程序类signals自定义行为。在

也可以在运行Celery时设置-f LOGFILE, logfile=LOGFILE参数。在

希望这有帮助。在

相关问题 更多 >