将日志添加到Airflow日志

use*_*930 12 apache logging etl python-3.x airflow

如何将自己的日志添加到自动生成的Apache Airflow日志中?任何打印语句都不会登录,所以我想知道如何添加我的日志,以便它也显示在用户界面上?

Iva*_*ali 15

我认为您可以通过使用日志记录模块并将配置信任到Airflow来解决此问题.

就像是:

import ...

dag = ...

def print_params_fn(**kwargs):
    import logging
    logging.info(kwargs)
    return None

print_params = PythonOperator(task_id="print_params",
                              python_callable=print_params_fn,
                              provide_context=True,
                              dag=dag)
Run Code Online (Sandbox Code Playgroud)

  • 我仍然只看到 `*** Reading local file: /home/ubuntu/airflow/logs/<dagname>/<taskname>/2019-08-30T17:26:27.272086+00:00/1.log` 并且没有我在日志记录中包含的内容。 (2认同)

小智 11

在 PythonOperator 的可调用 python 中,您可以使用:

import logging

LOGGER = logging.getLogger("airflow.task")
LOGGER.info("airflow.task >>> 2 - INFO logger test")
Run Code Online (Sandbox Code Playgroud)

这将产生正确的输出,如:

[2019-12-26 09:42:55,813] {operations.py:86} INFO - airflow.task >>> 2 - INFO logger test
Run Code Online (Sandbox Code Playgroud)

对于自定义记录器的情况:

LOGGER = logging.getLogger(__name__)
LOGGER.info("__name__ >>> 2 - INFO logger test")
Run Code Online (Sandbox Code Playgroud)

你会得到重复的格式:

[2019-12-26 09:42:55,813] {logging_mixin.py:112} INFO - [2019-12-26 09:42:55,813] {operations.py:79} INFO - __name__ >>> 2 - INFO logger test
Run Code Online (Sandbox Code Playgroud)