如何在运行 systemd 服务时创建 syslog 拥有的故障日志文件?

如何在运行 systemd 服务时创建 syslog 拥有的故障日志文件?

我在 ubuntu 16.04 上将 Go 二进制文件作为服务运行,并且无法创建 syslog 拥有的日志文件。我为 myapp.service 创建了一个服务,如下所示:

[Unit]
Description=myapp

[Service]
Type=simple
Restart=always
RestartSec=30
WorkingDirectory= /home/go/src/myapp
ExecStart=/home/go/src/myapp/myapp  

# myapp.log owned by syslog
PermissionsStartOnly=true
ExecStartPre=/bin/mkdir -p /var/log/myapp
ExecStartPre=/bin/chown syslog:adm /var/log/myapp
ExecStartPre=/bin/chmod 755 /var/log/myapp
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=myapp                           

[Install]
WantedBy=multi-user.target

现在它只是在 /var/log/myapp 内创建一个文件夹。但没有在 myapp 文件夹中创建任何 myapp.log 文件。我可以使用命令检查这些日志::

sudo journalctl -f -u myapp

之后使用 rsyslog 管理系统日志,在 /etc/rsyslog.d/myapp.conf 中创建一个包含以下内容的文件:

if $programname == 'myapp' then /var/log/myapp/myapp.log
& stop

之后我重新启动了服务。它为我创建了一个日志文件。但这包括成功和失败的日志,而我只想创建失败日志,这怎么可能?

相关内容