systemd服务指定输出文件

systemd服务默认会将日志输出到/var/log/messages中, 当然在/var/log/journal/里面也会保存一份, 如果我们希望systemd服务的日志打印到指定文件, 该如何配置?

先确定systemd版本

systemctl --version

如果版本大于等于236, 则直接配置

StandardOutput=file:/mnt/risk.log
StandardError=file:/mnt/risk.log
SyslogIdentifier=risk

其中risk是相关服务标识

如果版本小于236, 就需要通过rsyslog服务转发了

先配置rsyslog

vim /etc/rsyslog.d/tomcat.conf
##########################################
if ($programname == 'risk') then {
   action(type="omfile" file="/mnt/risk.log")
   stop
} else if ($programname == 'risk-job') then {
   action(type="omfile" file="/mnt/risk-job.log")
   stop
} else if ($programname == 'marmot') then {
   action(type="omfile" file="/mnt/marmot.log")
   stop
}

重启rsyslog服务

systemctl daemon-reload
systemctl restart rsyslog

配置服务

StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=risk

注意配置syslog, 不是rsyslog

重启相关服务

systemctl daemon-reload
systemctl restart risk

验证

参看日志输出

此时/var/log/messages就不会再打印以上相关服务信息了

展示评论