國內關於Syslog-ng的內容比較少,就是找到了也都是些許的只言片語,或者都僅僅是一些簡簡單單的配置facility或則和level以及destination等。
這兩天碰到一個問題,就是在日志轉發時,需要更改收到的日志的facility和level,結果中文文檔幾乎木有,英文的文檔倒是碰到一些,興奮之余,一打開傻眼了。。。好幾個都是問how to change the facility and level的,然後在balabit中看到回復如下:
"Simply because we're not there yet and because I didn't feel it that
important when we implemented the rewrite functionality."。。。
原來還木有實現這個功能啊,直接修改看來是行不通了,然後去下載“syslog-ng-v2.0-guide-admin-en.pdf”學習Syslog-ng的這本書可真是指明燈啊。終於找到解決方案:利用Syslog-ng中的template可以完美解決此問題
實例如下, 比如當我收到facility為local 6,level為debug的日志時,我需要將其facility改為local0, 同時 level 改為info然後存儲到本機,實現如下:
同時發往的目的地服務器(此處問本機127.0.0.1) 也要配置接收log,配置如下:
流程如下:
1. 本機收到屬性為local6.debug的日志,
2.發往d_template1 由於其應用規則為:{udp('127.0.0.1' port(514) template("<166>$DATE $HOST $MSG\n")); 故將其屬性轉換為local4.info,同時應用其他規則,
3.將應用新規則的log轉發給127.0.0.1,
4.本機的其他過濾器dest進行接收。
此過程完成也就將log的facility和level修改並存儲了。