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 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章