rsyslog:カスタムテンプレートを使用して別のファイルにログを送信する

rsyslog:カスタムテンプレートを使用して別のファイルにログを送信する

だから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問題が解決しました。

関連情報