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