我們需要測試一種集中日誌系統,要在Windows上建立一個類Linux下的集中日誌系統。
經過比較Winsyslog和Kiwisyslog等工具,最終選定Kiwisyslog(http://www.kiwisyslog.com/),它不僅功能齊全,而且提供免費的版本。
Kiwisyslog遵循標準的日誌協議(RFC 3164),並支援UDP/TCP/SNMP幾種方式的日誌輸入。它預設是個免費的功能受限版(但功能基本夠用了,只是沒有找到漢化),內建發送模擬器﹑日誌瀏覽器等工具 + 生產力。
我還測試了一下把ACE日誌寫到syslog的功能。過程記錄如下:
1)使用klog工具
這個主要用到kiwisyslog的klog工具 + 生產力(這個工具同時提供dll庫的調用方式,真是好東西,我決定以後在我的應用程式裡都用它!),它支援直接或用重新導向的方法輸出日誌到kiwisyslog。
klog –m "It's almost lunchtime"
DIR *.* | klog -h 192.168.1.2 -i
但我試圖使用ACE應用日誌輸出到kiwisyslog時(ace_app.exe | klog -h 192.168.1.2 -i的形式),發現日誌內容裡前後有亂碼出現,即ACE的日誌輸出直接重新導向到klog再轉到kiwisyslog有問題;並且不能按時間一行一行的輸出,而是等應用程式執行結束時一股腦輸出到kiwisyslog(按斷行符號換行切開成一條一條日誌)。如果程式非正常結束,還不能將輸出日誌內容傳到kiwisyslog。
還有一個方法是在Windows通過設定可以把ACE日誌輸出到系統日誌裡面。
ACE_LOG_MSG->set_flags (ACE_Log_Msg::SYSLOG);
然後按下面2)的方法轉到kiwisyslog。
2)還可以把Windows下的事件記錄轉到Linux下的syslog
我們需要第三方的軟體來將windows的日誌轉換成syslog類型的日誌後,轉寄給syslog伺服器。
介紹第三方軟體evtsys (全稱是evntlog to syslog)
檔案才幾十K大小,非常小巧,解壓後是兩個檔案evtsys.dll和evtsys.exe
把這兩個檔案拷貝到 c:/windows/system32目錄下。
開啟Windows命令提示字元(開始->運行 輸入CMD)
C:/>evtsys –i –h 192.168.10.100
-i 表示安裝成系統服務
-h 指定log伺服器的IP地址
如果要卸載evtsys,則:
net stop evtsys
evtsys -u
啟動該服務:
C:/>net start evtsys
開啟windows組策略編輯器 (開始->運行 輸入 gpedit.msc)
在windows設定-> 安全設定 -> 本地策略 ->稽核原則 中,開啟你需要記錄的windows日誌。evtsys會即時的判斷是否有新的windows日誌產生,然後把新產生的日誌轉換成syslogd可識別的格式,通過UDP 3072連接埠發送給syslogd伺服器。