当将 airflow 作为服务运行时,对 airflow.cfg 文件所做的更改不会反映出来

当将 airflow 作为服务运行时,对 airflow.cfg 文件所做的更改不会反映出来

我在 Centos 7 服务器上运行 airflow 1.10.11 作为 systemd 服务。

我想将日志记录位置更改为其他文件夹。为此,我在文件中base_log_folder = /code/python/airflow/airflow/logsbase_log_folder = /home/cel/sm/airflow/logs(Airflow_Home)进行了更改airflow.cfg

完成此操作后,当我重新启动调度程序和 Web 服务器时sudo systemctl restart airflow-schedulersudo systemctl restart airflow-webserver日志记录仍然在旧日志文件夹中,即/home/cel/sm/airflow/logs

我参考此链接来更改日志文件夹的位置:https://airflow.apache.org/docs/stable/howto/write-logs.html

不知道我这里遗漏了什么。如能提供任何帮助我将不胜感激。

答案1

TLDR:通过更改base_log_folder值,您只更改了任务的日志目录,您还需要通过更改以下child_process_log_directory值来更改调度程序的日志目录airflow.cfg

Airflow 中实际上有两种类型的日志记录:

  • 任务日志记录,将任务日志写入 DAG
  • 处理器日志记录,写入气流调度程序日志

airflow.cfg日志目录从 airflow 2.0 开始,这两种日志记录在文件中的两个不同配置中设置:

  • base_log_folder[logging]在任务日志部分,使用默认值{AIRFLOW_HOME}/logs
  • child_process_log_directory[scheduler]处理器日志记录部分使用默认值{AIRFLOW_HOME}/logs/scheduler

使用 systemd 重新加载配置重新启动 airflow-scheduler 和 airflow-webserver 进程。因此,我猜想仍写入旧日志目录中的日志只是调度程序的日志,您应该能够通过更改child_process_log_directory值来更正它,如下所示:

child_process_log_directory = /code/python/airflow/airflow/logs/scheduler

答案2

您还应该重新启动工作程序(如果您使用的是 celery 或类似程序)。对我来说,我只需重新启动 EC2,日志重定向就可以正常工作。如果可能,请尝试重新启动服务器。

相关内容