我们有一台 RHEL 8 服务器,其中安装了一些用于数据管理和分析的 Python 应用程序,尤其是 JupyterHub 和 Airflow。我们使用 systemd 单元文件设置了这些程序,因此我们可以使用 启动、停止、重新启动它们,systemctl
并使用 访问它们的日志journalctl
。负责服务器的基础设施人员恳请我们确保应用程序将其日志消息发送到 以外的某个地方,/var/log/messages
以便他们可以调试服务器运行状况,而不会让我们的应用程序“污染”日志。但我们无法找到解决方案。
有没有办法配置systemd
服务,使其日志不会出现/var/log/messages
?如果没有,我们可以使用什么来代替systemd
RHEL 生态系统中现有的服务?
答案1
systemd 不会将日志发送到/var/log/messages
;它会将内容写入系统日志(您可以使用journalctl
)。
如果有东西正在写入/var/log/messages
,那么它就是一个系统日志程序,例如系统日志工具或者rsyslog,即从日志中读取然后写入文件中/var/log
。如果您想更改这一点,请更新您的 syslog 服务器配置(或者,如果您根本不想在那里写入,请禁用它)。
RHEL 系统通常使用 rsyslog,在/etc/rsyslog.conf
(和/etc/rsyslog.d
) 中配置。
答案2
事实证明,这“就像使用StandardOutput
和StandardError
服务文件中的变量。
StandardOutput=append:/path/to/airflow-scheduler.log
StandardError=append:/path/to/airflow-scheduler.log
但现在我们需要想办法确保它们能够轮换。