最近在項目開發過程中使用到點擊記錄的功能,實現方式是通過syslog的方式將日志送到log服務器,由log服務器統計點擊數據供服務端參考。
centos6.5及以上版本使用的是rsyslog服務,可以理解為syslog的增強版。下邊記錄一下客戶端和服務端的配置,以便下次使用的時候方便查詢。
服務端配置
$ModLoad imtcp
$InputTCPServerRun 514
$template RemoteLogs,"/var/log/%HOSTNAME/%PROGRAMNAME%.log"
local5.* ?RemoteLogs
主要是上述四行,開啟tcp端口,保持默認端口即可,更改端口注意在防火墻開發相應端口。另外就是指定模板,最后一行是需要使用這個模板輸出的日志類型。
我們看一下模板規則,這個規則是以主機名為目錄,然后以輸出的項目名為文件名記錄log,這次主機記錄的是local5級別的日志,主要目的是通過不同的log名,統計用戶的點擊數量,所以服務器的模板規則應該就是這一種。
客戶端配置
local5.* @@192.168.1.170
$EscapeControlCharactersOnReceive off
客戶端就簡單許多了,就是制定輸出的服務器地址@@代表的是通過tcp方式傳輸,@就是udp了,如果我們更改端口的話就加上一個端口號,默認端口的話可以帶端口。
后邊這一行的作用是關閉rsyslog默認轉譯ASCII的所有怪異字符,包括換行符等。
最后我們測試一下效果,通過c代碼來測試
#include <syslog.h>
int main(int argc, char **argv)
{
openlog("可變更的日志名", LOG_CONS | LOG_NDELAY, LOG_LOCAL5);
syslog(LOG_INFO,"This is a syslog test file!");
closelog();
return 0;
}
在客戶端編譯執行,查看結果!