Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 向气流日志添加日志_Apache_Python 3.x_Logging_Etl_Airflow - Fatal编程技术网

Apache 向气流日志添加日志

Apache 向气流日志添加日志,apache,python-3.x,logging,etl,airflow,Apache,Python 3.x,Logging,Etl,Airflow,如何将自己的日志添加到自动生成的Apache Airflow日志中?任何print语句都不会在那里登录,因此我想知道如何添加日志,以便它也显示在UI上?如果您查看PythonOperator:,似乎无法将可调用python的STDOUT/STDERR记录到日志中 但是,如果查看BashOperator:,则其中的STDOUT/STDERR将与气流日志一起记录。因此,如果日志对您很重要,我建议将python代码添加到一个单独的文件中,并使用BashOperator调用它。我认为您可以通过使用日志模

如何将自己的日志添加到自动生成的Apache Airflow日志中?任何print语句都不会在那里登录,因此我想知道如何添加日志,以便它也显示在UI上?

如果您查看PythonOperator:,似乎无法将可调用python的STDOUT/STDERR记录到日志中


但是,如果查看BashOperator:,则其中的STDOUT/STDERR将与气流日志一起记录。因此,如果日志对您很重要,我建议将python代码添加到一个单独的文件中,并使用BashOperator调用它。

我认为您可以通过使用日志模块并信任配置来解决这个问题

比如:

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)

在python callable for PythonOperator内部,您可以使用:

导入日志
LOGGER=logging.getLogger(“aiffort.task”)
LOGGER.info(“aiffair.task>>>2-信息记录器测试”)
这将产生正确的输出,如:

[2019-12-2609:42:55813]{operations.py:86}INFO-afflow.task>>2-INFO记录器测试
对于自定义记录器的情况:

LOGGER=logging.getLogger(\uuuuu name\uuuuu)
LOGGER.info(“\uuuuu name\uuuu>>>2-信息记录器测试”)
您将获得重复的格式设置:

[2019-12-26 09:42:55813]{logging\u mixin.py:112}INFO-[2019-12-26 09:42:55813]{operations.py:79}INFO-\uuuuuuu name\uuuu>>2-信息记录器测试

您只需
在Python中导入日志记录
,然后执行
logging.info(“您想要的任何日志”)
即可写入日志。您不需要通过bash操作符调用Python代码,只需使用PythonOperator即可。Ivan Gozali在上面的答案中显示了这一点,该答案是在这个答案之后写的:)我仍然看到,
***正在阅读本地文件:/home/ubuntu/afflow/logs///2019-08-30T17:26:27.272086+00:00/1.log
,而我在日志语句中没有包含任何内容。@benten在这个解决方案中遵循了建议之后,我也看不到日志消息中包含的内容。您知道如何让记录器工作了吗?这是如何与python模块一起工作的?例如,如果我的callable从我编写并导入的模块调用函数,那么应该如何设置登录该模块?现在我调用logging.getLogger(),得到了您描述的重复格式。