問題描述:
服務器B從遠端接收來自服務器A的消息網關日志,按照配置要求,需要將這些日志按照消息標簽分類寫入不同的文件中。
例如有這樣一條日志:
Sep 12 08:00:03 192.100.6.3 Monster-CMPP20MO[37518]: 20180912080002SMS0000999L00100000000cc515275,0,00,,,09120800018510260295,,,,xxxxxxxxxxx,,,1,xxxxxxxxxx,,,,,,,,,,,,0,6,DM302J,
我們希望可以按照“Monster-CMPP20MO”這樣的消息標簽來寫入到monster-cmppmo.log文件中。
但是,按照以前的配置無法實現日志過濾的效果,服務器B會將接收到的所有日志全部寫到每一個文件中。根本沒有做分類處理。
解決辦法:
首先加入模板
$template TraditionalFormat, "%timegenerated% %HOSTNAME% %syslogtag%%msg:::drop-last-lf%\n" ps:drop-last-lf 表示寫入所有日志
添加完模板后,需要配置一下將模板利用起來
if ($syslogtag startswith 'Monster-CMPP20MT') then { *.=info /xxx/xxx/monster-cmppmt.log;TraditionalFormat } if ($syslogtag startswith 'Monster-MM7MT') then { *.=info /xxx/xxx/monster-mm7mt.log;TraditionalFormat } ......
重啟rsyslog,解決。