rsyslog 接收远程日志且去掉日志头

最近碰到一个需求是要用syslog接收远程日志,将远程日志输出到一个单独的文件中。

实现这个需求,只需要在/etc/rsyslog.conf添加如下配置:

$template IpTemplate,"/var/log/%FROMHOST-IP%.log"
*.*  ?IpTemplate
& ~
添加这三行配置之后,远程日志会被单独输出到一个以IP命名的日志文件中。

查看该文件日志会发现每一条收到的日志都被添加上了一个日志头,这个非常讨厌,有没有办法去除掉这些日志头呢?

方法是有的,仍然是添加/etc/rsyslog.conf配置:

#$template myformat,"%$NOW% %TIMESTAMP:8:15% %hostname% %syslogtag% %msg%\n"
$template myformat,"%msg%\n"   #去除日志头
$ActionFileDefaultTemplate myformat    #使用自定义的日志模板

使用这种方式除了去除日志头,当然也是能修改日志头的。使用上面一个template就是修改时间格式了。

如果采用了去除日志头的日志模板,则会导致所有记录的日志(包括远程和本地的日志)都将不会有日志头。

勘误:如果使用"%msg%\n"输出日志,如果一条日志被分为多条日志输出,则会出现日志衔接不上,日志与日志之间会出现丢失一定字符的情况。为了解决这个问题,应该

"%syslogtag% %msg%\n"作为myformat template进行输出。


下面给出rsyslog的部分配置文件:

# provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514

$template myformat,"%msg%\n"
#$template myformat,"%$NOW% %TIMESTAMP:8:15% %hostname% %syslogtag% %msg%\n"
$ActionFileDefaultTemplate myformat

$template IpTemplate,"/var/log/%FROMHOST-IP%.log"
*.*  ?IpTemplate
& ~

系统:debian 7

rsyslog 版本:5.8.11-3+deb7u2 (系统自带的版本)


参考链接:

https://linux.cn/article-5023-1.html

http://961911.blog.51cto.com/951911/1590365 


你可能感兴趣的:(rsyslog 接收远程日志且去掉日志头)