写入Airflow日志

tha*_*guy 23 airflow

写在气流日志的一种方法是从PythonOperator返回一个字符串,像第44行这里.

还有其他方法可以写入气流日志文件吗?我发现print语句没有保存到日志中.

J.F*_*zke 29

您可以将日志记录模块导入代码并以这种方式写入日志

import logging

logging.info('Hello')
Run Code Online (Sandbox Code Playgroud)

  • 这对“信息”以外的其他内容是否有用?当我的警告级别为“信息”时,它开始工作,但是随后我尝试将airflow.cfg logging_level设置为WARNING和ERROR,并尝试使用logging.warning('my message')和logging.error('my message') ,或者这两项都不起作用。可悲的是,气流日志真的很冗长,我不想用多余的信息来发送垃圾邮件。我更喜欢只写带有“ INFO”的自定义应用程序消息,而不要在日志中弄得一团糟。不确定在Airflow 1.10.1中是否还不支持此功能? (5认同)
  • 我仍在试图弄清楚为什么我可能会使用logging.info而不是打印(用于简单的调试目的或读取有关DAG执行的信息)。 (2认同)
  • 我的“logging.info”未显示在日志中。另一方面,打印语句 (2认同)

Hee*_*dge 14

您可能会使用气流记录器

import logging


logger = logging.getLogger("airflow.task")
logger.error("Your custom error")
Run Code Online (Sandbox Code Playgroud)

  • 您可以通过调用 `logging.getLogger("airflow.task")` 要求 Airflow 提供由 Airflow 配置的记录器。日志转到“airflow.cfg”文件中指定的目录 (2认同)

Ale*_*par 8

您可以使用一个记录器 mixin 类:

https://github.com/apache/airflow/blob/main/airflow/utils/log/logging_mixin.py

from airflow.utils.log.logging_mixin import LoggingMixin

LoggingMixin().log.info("Hello")
Run Code Online (Sandbox Code Playgroud)

然后在气流日志中您将看到:

[2021-07-07 15:55:42,370] {{logging_mixin.py:112}} INFO - Hello
Run Code Online (Sandbox Code Playgroud)