配合ROS的syslog使用
原文:
https://www.cnblogs.com/duanxz/p/3724232.html
我們需要測試一種集中日志系統,要在Windows上建立一個類Linux下的集中日志系統。
經過比較Winsyslog和Kiwisyslog等工具,最終選定Kiwisyslog(http://www.kiwisyslog.com/),它不僅功能齊全,而且提供免費的版本。
安裝完成后,打開Kivi syslog service Manager,啟動一個Syslogd service如下圖:
web訪問顯示日志
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服務器。