使用rsyslog强制修改程序日志输出路径

1.rsyslog简介

Rsyslog 是一个 syslogd 的多线程增强版。它提供高性能、极好的安全功能和模块化设计。虽然它基于常规的 syslogd,但 rsyslog 已经演变成了一个强大的工具,可用于:

  • 接收来自各种来源的输入
  • 转换它们
  • 将结果输出到不同的目的地

可以理解为强行将一个程序的日志输出到一个指定的路径,经常用于无法指定日志路径的程序,例如第三方组件,就一条命令也没有配置文件,这种程序通常会将日志输出到/var/log/messages里,显然不合理,这时就可以通过rsyslog强行将程序的日志输出到指定路径

2.rsyslog日志强转操作

以remote_storage_adapter为例

2.1.编写rsyslog配置文件

[root@prometheus-10-90 ~]# vim  /etc/rsyslog.d/remote.conf 
if $programname == 'remote_storage_adapter' then {							#程序的名称
   action(type="omfile" file="/var/log/remote_storage/rsa.log")				#输出到什么路径
   stop
}
#整体解释下来,就是当程序为remote_storage_adapter时,就将日志输出到/var/log/remote_storage/rsa.log这个路径

2.2.重启rsyslog以及对应的组件程序

[root@prometheus-10-90 ~]# systemctl restart rsyslog
[root@prometheus-10-90 ~]# systemctl restart remote_storage_adapter.service 

2.3.创建日志路径

[root@prometheus-10-90 ~]# mkdir -p /var/log/remote_storage

2.4.查看日志是否输出到指定路径

[root@prometheus-10-90 ~]# tail -f /var/log/remote_storage/rsa.log
Apr 26 09:50:55 prometheus-10-90 remote_storage_adapter: level=info ts=2021-04-26T01:50:55.112324754Z caller=main.go:210 msg="Starting up..."