系统记录到外部文件

时间:2017-04-27 08:42:37

标签: ubuntu ubuntu-16.04 systemd

我有以下的Systemd服务脚本来运行Spring启动应用程序 -

GridModule


我将脚本保存在以下位置 -

[Unit]
Description=Upstart for Security
After=network.target network-online.target
Wants=network-online.target

[Service]
User=root
WorkingDirectory=/home/ubuntu/security
ExecStart=/usr/bin/java -classpath java -Dspring.profiles.active=stage -jar /home/ubuntu/security/security-0.0.1-SNAPSHOT.jar > /home/ubuntu/security/security.log 2>&1
SuccessExitStatus=143
Restart=on-failure
RestartSec=120s

[Install]
WantedBy=multi-user.target


我运行了以下命令来运行systemd服务脚本 -

 /etc/systemd/system


要检查日志,我会触发命令 -

1. sudo systemctl enable security.service -or- sudo systemctl daemon-reload
2. sudo systemctl status security.service 
3. sudo systemctl start security.service

并使用journalctl -u security.service 滚动到eof

我可以通过上述步骤查看日志,但我希望它们位于 / home / ubuntu / security 位置的外部文件中,如 security.log
我怎样才能实现它?我在系统脚本中做了哪些更改?

1 个答案:

答案 0 :(得分:7)

您可以使用syslog来完成此任务。指示您的systemd服务使用标识符将stdout / stderr路由到syslog,并让syslog处理写入文件。

[Service]
...
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=<your-svc-identifier>

现在在/etc/rsyslog.d/

中添加配置到syslog
if $programname == '<your-svc-identifier>' then /var/log/<your-svc>.log
if $programname == '<your-svc-identifier>' then stop

重新加载syslog

$ sudo systemctl restart rsyslog