日志记录:记录器不记录到文件,而是记录到控制台



我正在尝试为基于Celery的应用程序配置一个记录器。控制台日志记录工作正常。但是,日志消息不会添加到我指定的日志文件:celery.log中。

  • 为什么日志消息没有写入日志文件

这是我的日志记录配置

# log_config.py    
import sys
LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'formatters': {
        'simple': {
            'format': '%(levelname)s %(message)s',
             'datefmt': '%y %b %d, %H:%M:%S',
            },
        },
    'handlers': {
        'console': {
            'level': 'WARN',
            'class': 'logging.StreamHandler',
            'stream': sys.stdout,
            'formatter': 'simple'
        },
        'celery': {
            'level': 'WARN',
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': '/tmp/celery.log',
            'formatter': 'simple',
            'backupCount': 5,
            'maxBytes': 1024 * 1024 * 100,  # 100 mb
        },
    },
    'loggers': {
        'celery': {
            'handlers': ['celery', 'console'],
            'propagate': True,
            'level': 'WARN',
        },
    }
}

芹菜和日志初始化:

dictConfig(log_config.LOGGING)
app = Celery('app',
             broker=env('CELERY_BROKER_URL', 'amqp://'),
             backend=env('CELERY_BACKEND_URL', 'rpc://'),
             include='tasks')

样本输出

[2016-05-04 12:32:45,077: WARNING/MainProcess] celery@computer1 ready.
[2016-05-04 12:32:47,503: WARNING/Worker-2] [INFO] Running plugin `one` with target `www.example.com`
[2016-05-04 12:32:47,508: WARNING/Worker-1] [INFO] Running plugin `two` with target `www.example.com`
[2016-05-04 12:32:47,559: WARNING/Worker-3] [INFO] Running plugin `three` with target `('127.0.0.1', 'example.com')`
[2016-05-04 12:32:47,559: WARNING/Worker-3] tasks.MySampleTask[31ffe71d-4645-47f2-1237-4c431282ac12]: it works!

PS:我不使用Django。

您可以使用CELERYD_HIJACK_ROOT_LOGGER设置来使用自定义记录器。

app.conf.update(CELERYD_HIJACK_ROOT_LOGGER=False)

如果重新启动worker,它将生成一个芹菜日志文件。

你可以在芹菜文档中阅读更多关于这方面的内容。

相关内容

  • 没有找到相关文章

最新更新