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
その後、サービスを再起動しました。私のためのログファイルが生成されます。しかし、これには成功ログと失敗ログが含まれていますが、失敗ログのみを生成したいのですが、どうすれば可能ですか?