繁体   English   中英

如何在YAML配置文件中添加TaskFormatter

[英]How to add TaskFormatter in YAML config file

我想将芹菜TaskFormatter添加到我的登录处理程序中。 当我在以下代码中配置它时,它可以工作:

from celery.app.log import TaskFormatter

LOGGER = logging.getLogger()
sh = logging.StreamHandler()
sh.setFormatter(TaskFormatter('%(asctime)s - %(task_id)s - %(task_name)s - %(name)s - %(levelname)s - %(message)s'))
LOGGER.setLevel(logging.INFO)
LOGGER.addHandler(sh)

但是,当我尝试在yaml文件中配置它(我使用pyyaml)时,我得到了:

ValueError: Unable to configure formatter 'celery_formatter'

我的logger.yaml

version: 1

formatters:
  celery_formatter:
    class: 'celery.app.log.TaskFormatter'
    format: '%(asctime)s - %(task_id)s - %(task_name)s - %(name)s - %(levelname)s - %(message)s'
    datefmt: '%Y-%m-%d %H:%M'

handlers:
  stdout_handler:
    class: logging.StreamHandler
    level: INFO
    formatter: celery_formatter
    stream: ext://sys.stdout

loggers:
  app_logger:
    level: DEBUG
    handlers: [file, stdout_handler, stderr_handler]
propagate: no

我想念什么?

根据文档 ,您只能为将用于构造Formatter实例的formatters项目指定formatdatefmt键。 看来您无法使用class提供自定义格式化程序class

但是,您可以提供'()'提供自定义类,请参见此处 配置的相关部分将变为

formatters:
  celery_formatter:
    (): celery.app.log.TaskFormatter
    format: '%(asctime)s - %(task_id)s - %(task_name)s - %(name)s - %(levelname)s - %(message)s'
    datefmt: '%Y-%m-%d %H:%M'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM