最近碰到一个需求是要用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"输出日志,如果一条日志被分为多条日志输出,则会出现日志衔接不上,日志与日志之间会出现丢失一定字符的情况。