私は問題を解決するよりエレガントな方法があると思います:stdout / stderrを識別子と共にsyslogに送信し、プログラム名で出力を分割するようにsyslogマネージャーに指示します。
systemdサービスユニットファイルで次のプロパティを使用します。
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=<your program identifier> # without any quote
次に、ディストリビューションがrsyslogを使用してsyslogを管理していると想定し/etc/rsyslog.d/<new_file>.conf
て、次の内容のファイルをに作成します。
if $programname == '<your program identifier>' then /path/to/log/file.log
& stop
ログファイルをsyslogによって書き込み可能にします。
# ls -alth /var/log/syslog
-rw-r----- 1 syslog adm 439K Mar 5 19:35 /var/log/syslog
# chown syslog:adm /path/to/log/file.log
rsyslog(sudo systemctl restart rsyslog
)を再起動してお楽しみください!プログラムstdout / stderrは、journalctl(sudo journalctl -u <your program identifier>
)を介して引き続き使用できますが、選択したファイルでも使用できます。
archive.orgからのソース
journalctl -u
引き続き機能しますが、指定されたファイルには何も送信されません。