一、日志相關概念


日志是一種可以追蹤某些軟件運行時所發(fā)生事件的方法。軟件開發(fā)人員可以向他們的代碼中調(diào)用日志記錄相關的方法來表明發(fā)生了某些事情。一個事件可以用一個可包含可選變量數(shù)據(jù)的消息來描述。此外,事件也有重要性的概念,這個重要性也可以被稱為嚴重性級別(level)。

1.日志的作用

通過log的分析,可以方便用戶了解系統(tǒng)或軟件、應用的運行情況;如果你的應用log足夠豐富,也可以分析以往用戶的操作行為、類型喜好、地域分布或其他更多信息;如果一個應用的log同時也分了多個級別,那么可以很輕易地分析得到該應用的健康狀況,及時發(fā)現(xiàn)問題并快速定位、解決問題,補救損失。
簡單來講就是,我們通過記錄和分析日志可以了解一個系統(tǒng)或軟件程序運行情況是否正常,也可以在應用程序出現(xiàn)故障時快速定位問題。比如,做運維的同學,在接收到報警或各種問題反饋后,進行問題排查時通常都會先去看各種日志,大部分問題都可以在日志中找到答案。再比如,做開發(fā)的同學,可以通過IDE控制臺上輸出的各種日志進行程序調(diào)試。對于運維老司機或者有經(jīng)驗的開發(fā)人員,可以快速的通過日志定位到問題的根源??梢?,日志的重要性不可小覷。日志的作用可以簡單總結為以下3點:

  • 程序調(diào)試

  • 了解軟件程序運行情況,是否正常

  • 軟件程序運行故障分析與問題定位

如果應用的日志信息足夠詳細和豐富,還可以用來做用戶行為分析,如:分析用戶的操作行為、類型洗好、地域分布以及其它更多的信息,由此可以實現(xiàn)改進業(yè)務、提高商業(yè)利益。

2.日志的等級

我們先來思考下下面的兩個問題:

  • 作為開發(fā)人員,在開發(fā)一個應用程序時需要什么日志信息?在應用程序正式上線后需要什么日志信息?

  • 作為應用運維人員,在部署開發(fā)環(huán)境時需要什么日志信息?在部署生產(chǎn)環(huán)境時需要什么日志信息?

在軟件開發(fā)階段或部署開發(fā)環(huán)境時,為了盡可能詳細的查看應用程序的運行狀態(tài)來保證上線后的穩(wěn)定性,我們可能需要把該應用程序所有的運行日志全部記錄下來進行分析,這是非常耗費機器性能的。當應用程序正式發(fā)布或在生產(chǎn)環(huán)境部署應用程序時,我們通常只需要記錄應用程序的異常信息、錯誤信息等,這樣既可以減小服務器的I/O壓力,也可以避免我們在排查故障時被淹沒在日志的海洋里。那么,怎樣才能在不改動應用程序代碼的情況下實現(xiàn)在不同的環(huán)境記錄不同詳細程度的日志呢?這就是日志等級的作用了,我們通過配置文件指定我們需要的日志等級就可以了。

不同的應用程序所定義的日志等級可能會有所差別,分的詳細點的會包含以下幾個等級:

  • DEBUG

  • INFO

  • NOTICE

  • WARNING

  • ERROR

  • CRITICAL

  • ALERT

  • EMERGENCY

3.日志字段信息與日志格式

本節(jié)開始問題提到過,一條日志信息對應的是一個事件的發(fā)生,而一個事件通常需要包括以下幾個內(nèi)容:

  • 事件發(fā)生時間

  • 事件發(fā)生位置

  • 事件的嚴重程度--日志級別

  • 事件內(nèi)容

網(wǎng)友評論