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解决问题。

相关内容