Apache 向气流日志添加日志
如何将自己的日志添加到自动生成的Apache Airflow日志中?任何print语句都不会在那里登录,因此我想知道如何添加日志,以便它也显示在UI上?如果您查看PythonOperator:,似乎无法将可调用python的STDOUT/STDERR记录到日志中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调用它。我认为您可以通过使用日志模
但是,如果查看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(),得到了您描述的重复格式。