我正在尝试将 systemd
服务的输出重定向到文件,但它似乎不起作用:
[Unit]
Description=customprocess
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/bin/binary1 agent -config-dir /etc/sample.d/server
StandardOutput=/var/log1.log
StandardError=/var/log2.log
Restart=always
[Install]
WantedBy=multi-user.target
请纠正我的做法。
原文由 meallhour 发布,翻译遵循 CC BY-SA 4.0 许可协议
我认为有一种更优雅的方法来解决这个问题:将 stdout/stderr 发送到带有标识符的 syslog 并指示您的 syslog 管理器按程序名称拆分其输出。
在您的 systemd 服务单元文件中使用以下属性:
然后,假设你的发行版使用 rsyslog 来管理 syslogs,在
/etc/rsyslog.d/<new_file>.conf
中创建一个文件,内容如下:现在使日志文件可被 syslog 写入:
重新启动 rsyslog (
sudo systemctl restart rsyslog
) 并享受!您的程序 stdout/stderr 仍可通过 journalctl (sudo journalctl -u <your program identifier>
) 获得,但它们也可在您选择的文件中获得。来源:archive.org