因此,我正在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
解决问题。