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

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

ベストアンサー1

おすすめ記事