syslog--unix like系統常用的log工具
當前的一個專案需要音影片的技術,而公司剛好沒有類似的產品。幸好開源社群如此的強大,稍微谷歌一下,就找到了強大的Kamailio整合Asstersik的解決方案。
接下來的事情非常順利,安裝ubuntu作業系統、下載原始碼、編譯、安裝軟體,按照官方文件一步步前進。過程中沒有提示任何錯誤,這讓我們很興奮。
但是當我們使用imsandroid(一個Android系統的Sip客戶端)進行測試時,結果顯示連線失敗。這個客戶端軟體嚴格遵守"不要列印任何讓使用者挫敗的錯誤"原則,這是非常正確的,但是對查詢錯誤而言,這讓人挫敗。
我們只好從伺服器端開始查錯,首先檢視服務端的kamailio是否正常啟動,執行命令 ps –ef | grep kamailio。結果顯示我們sip服務沒有啟動。接下來我們需要的則是更多的關於軟體執行的資訊,包括啟動資訊、錯誤資訊、以及任何軟體開發人員想告訴我們的資訊。
可是,問題來了。
如果你經常在windows下開發,並且沒有太多的Linux開發經驗,你會試圖在軟體的安裝目錄下查詢包含log關鍵字的文字,結果是not found。
誰可以幫助你
syslog是unix like系統記錄log的規範,非常多的系統都預設支援它。redhat、ubuntu centos等等。你可以在你係統中執行ps –ef | grep syslogd來確認。
正因為它是如此廣泛地被支援,所以很可能你的軟體就剛好是使用它來記錄log的。
軟體是否使用syslog,還是自定義log呢?
為了確認軟體使用何種方式記錄log,可以檢視官方文件提到的該軟體的log配置,比如Asterisk的logger.conf配置檔案,其中就有一段
;debug => debug
;security => security
console => notice,warning,error
;console => notice,warning,error,debug
messages => notice,warning,error
;full => notice,warning,error,debug,verbose,dtmf,fax
;syslog keyword : This special keyword logs to syslog facility ;
;syslog.local0 => notice,warning,error ;
上面的syslog facility告訴你,軟體支援syslog(這裡facility意為服務類別)。即使它不說,如果你熟知syslog的facility,也可以猜到它是否支援。下面列舉一些常見的facility及其含義:
服務類別
說明
auth (authpriv)
記錄與驗證有關的資訊
cron
記錄系統排程的資訊
daemon
記錄各個daemon產生的資訊
kern
記錄核心產生的資訊
lpr
記錄列印相關的資訊
記錄郵件的有關的資訊
news
記錄新聞有關的資訊
syslog
記錄syslog本省產生的資訊
user, uucp, local0 ~ local7
記錄各種傳統的Unix系統本身有關的資訊
手動設定軟體使用日誌服務
以redis為例,其配置檔redis.conf預設沒有使用syslog日誌服務,找到以下的選項,然後將註釋去掉
# it can be one of:
# debug (a lot of information, useful for development/testing)
# verbose (many rarely useful info, but not a mess like the debug level)
# notice (moderately verbose, what you want in production probably)
# warning (only very important / critical messages are logged)
loglevel debug
# Specify the log file name. Also 'stdout' can be used to force
# Redis to log on the standard output. Note that if you use standard
# output for logging but daemonize, logs will be sent to /dev/null
logfile stdout
# To enable logging to the system logger, just set 'syslog-enabled' to yes,
# and optionally update the other syslog parameters to suit your needs.
syslog-enabled yes
# Specify the syslog identity.
syslog-ident redis
# Specify the syslog facility. Must be USER or between LOCAL0-LOCAL7.
syslog-facility local0
預設日誌資訊會被列印到/var/log/syslog檔案中,如果希望將log列印到單獨的檔案中,需要在(ubuntu為/etc/rsyslog.d/50-default.conf,centos為/etc/rsyslog.conf)中配置的。比如
*.*;auth,authpriv.none,local0.none -/var/log/syslog
local0.* -/var/log/redis.log
還應該注意的是,每個日誌都有相應的log級別,這和java 的log4j工具很類似。
等級
等級名稱
說明
1
info
一般的說明資訊,一般提示使用者級別的操作資訊
2
notice
比info還需要被注意的資訊
3
warning
(warn)
警示資訊,可能出現了問題,但是不影響軟體的正常執行
4
err
(error)
一些重大的錯誤,可能導致軟體不能正常使用
5
crit
嚴重的資訊
6
alert
比crit更為嚴重的資訊
7
emerg
(panic)
罪嚴重的警告,意指系統可能當機。通常只有硬體出現錯誤,導致核心無法正常工作才會出現。
最後,容易遺忘的是重啟syslogd服務,指令service rsyslog restart。然後啟動服務,檢視log即可tail -f -n 200 /var/log/redis.log。
教你看懂syslog檔案
每條資訊均會記錄以下的重要資訊:
事件發生的日期和時間。
啟動事件的主機名稱。
啟動事件的服務名稱(比如httpd、samba等)或函式名稱(oam_unix)。
資訊的實際內容
如果你想要更多的資訊,或者比較少的、特別關注的資訊,你可修改syslog的配置檔來實現,這個在以後的章節會介紹。例子為系統/var/log/secure的擷取:
[root@www ~]# cat /var/log/secure
1 Mar 14 15:38:00 www atd[18701]: pam_unix(atd:session): session opened for user root by (uid=0)
2 Mar 14 15:38:00 www atd[18701]: pam_unix(atd:session): session closed for user root
3 Mar 16 16:01:51 www su: pam_unix(su-l:auth): authentication failure; logn ame=vbird uid=500 euid=0 tty=pts/1 ruser=vbird rhost= user=root
4 Mar 16 16:01:55 www su: pam_unix(su-l:session): session opened for user root by vbird(uid=500)
5 Mar 16 16:02:22 www su: pam_unix(su-l:session): session closed for user root
|--日期/時間------|-H-|--------服務或函式---------|--訊息說明------>
結論
syslog的應用是如此的廣泛,許多的軟體採用它來記錄log,所以我們很有必要理解並掌握它。不僅要認識syslog提供的服務,以及如何去發現、甚至配置服務對應的log文件路徑,還要知道如何在軟體中定義服務的log級別。
系統預設包含使用syslog的服務
預設在/var/log目錄下,可以找到如下的目錄:
/var/log/cron:
記錄系統排程啟動的資訊。
/var/log/dmesg:
記錄系統開機時產生的各種資訊。
/var/log/lastlog:
記錄使用者登入系統的資訊。
/var/log/maillog 或 /var/log/mail/*:
記錄郵件相關的資訊,主要有sendmain與devecot產生的資訊,前者是SMTP協議的提供者,而後者是POP3協議的提供者。
/var/log/messages:
記錄系統發生的錯誤資訊,對於差錯非常重要。
/var/log/secure:
記錄軟體驗證的資訊。包含ssh、telnet以及login程式等程式的驗證資訊,基本上,涉及驗證的軟體都會在這個檔案中記錄。
/var/log/wtmp, /var/log/faillog:
這兩個檔案記錄正確登入系統的賬號與錯誤登入的賬號資訊。
/var/log/httpd/*, /var/log/news/*, /var/log/samba/*:
不同的服務可能使用自己的log檔記錄產生的各項資訊,這需要軟體在配置檔中進行相應的配置。
©著作權歸作者所有:來自51CTO部落格作者jeremy_iter的原創作品,如需轉載,請註明出處,否則將追究法律責任
linuxsyslogredisjava開發
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4687/viewspace-2822159/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 分享自己經常用到的刷系統工具
- 盤點Linux系統中常用的防火牆工具!Linux防火牆
- JDK不同作業系統的FileSystem(unix-like)上篇JDK作業系統
- JDK不同作業系統的FileSystem(unix-like)中篇JDK作業系統
- log 工具
- Unix系統中常用內建工具的命令使用指南
- Linux系統下常用的3種網路測速工具!Linux
- ZooKeeper的系統列印Log的處理方法
- 常用作業系統掃描工具介紹(轉)作業系統
- 【分享】Linux系統下3種常用的網路測速工具!Linux
- log工具類
- 一文詳解Linux系統常用監控工具Linux
- MySQL 日誌系統 redo log、binlogMySql
- 常用系統io
- 10多個 Linux 系統管理員必備的監控工具、常用的網站監控工具Linux網站
- Ubuntu常用磁碟工具Disks、GParted和系統清理應用CleanerUbuntu
- Linux常用系統命令Linux
- linux系統常用的中介軟體Linux
- Log 工具列印日誌
- ios 常用的工具iOS
- 常用的六西格瑪統計工具有哪些?
- Mysql系統變數中 log_error_services | log_filter_internal; log_sink_internal 和 log_error_verbosity | 2 解釋MySql變數ErrorFilter
- 伺服器常用的作業系統伺服器作業系統
- linux常用的幾個系統介紹Linux
- 7 Android中常用的系統服務Android
- Android系統常用分割槽Android
- JAVA_系統常用類Java
- Linux常用系統管理命令Linux
- Material Design 風格的 Excell-like 網頁端電子表格處理系統Material DesignExcel網頁
- Windows系統常用系統引數設定文件Windows
- Linux系統檢視log日誌命令詳解!Linux
- node.js常用的fs檔案系統Node.js
- Oracle常用的系統查詢語句整理Oracle
- Linux中監控系統效能常用的命令!Linux
- 探究國內常用的crm系統有哪些?
- Linux系統中建立檔案常用的方法!Linux
- 常用的國外CRM系統哪個好?
- 測試開發之系統篇-常用系統命令