だからsystemd
ログをに送信し、rsyslog
ログをに書きたいと思います/var/log/app.log
。
独自のログ形式を持つJavaアプリケーションなので、タイムスタンプや何も含めたくなく、メッセージ自体だけを含めたいと思います。
私が今まで持っているのはこれです:
[Unit]
Description=My App
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=myapp
ExecStart=/usr/bin/java -jar /opt/app.jar
Restart=on-failure
[Install]
WantedBy=multi-user.target
それからファイルがあります/etc/rsyslog.d/myapp.conf
。
template(name="clean" type="string" string="%msg:2:$:drop-last-lf%\n")
if $programname == 'myapp' then action(type="omfile" file="/var/log/app.log" template="clean")
& stop
私が理解したことが正しい場合は、プログラム名があればテンプレートをmyapp
使用し、ログを保存して停止する必要があります。clean
/var/log/app.log
ログを/var/log/syslog
。
これらのログがシステムログにも保存されないようにするにはどうすればよいですか?
答え1
問題は、基本プロファイルが50-defaults.conf
最初に処理されるということです。
これは、ログがデフォルトの設定に従って送信され、次に私の設定ファイルを通過して停止しますが、/var/log/syslog
後に何もないため重要ではありません。
名前を変更すると10-myapp.conf
問題が解決しました。