将日志添加到Airflow日志

时间:2016-10-19 01:07:38

标签: apache python-3.x logging etl airflow

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

3 个答案:

答案 0 :(得分:12)

我认为您可以通过使用日志记录模块并将配置信任到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)

答案 1 :(得分:2)

如果查看PythonOperator:https://github.com/apache/incubator-airflow/blob/master/airflow/operators/python_operator.py#L80-L81,看起来无法将python callable中的STDOUT / STDERR记录到气流日志中。

但是,如果您查看BashOperator:https://github.com/apache/incubator-airflow/blob/master/airflow/operators/bash_operator.py#L79-L94,则会从那里记录STDOUT / STDERR以及气流日志。因此,如果日志对您很重要,我建议将python代码添加到单独的文件中并使用BashOperator调用它。

答案 2 :(得分:1)

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

import logging

LOGGER = logging.getLogger("airflow.task")
LOGGER.info("airflow.task >>> 2 - INFO logger test")

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

[2019-12-26 09:42:55,813] {operations.py:86} INFO - airflow.task >>> 2 - INFO logger test

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

LOGGER = logging.getLogger(__name__)
LOGGER.info("__name__ >>> 2 - INFO logger test")

您将获得格式重复:

[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
相关问题