為什麼要打日誌
在日常開發中 日誌起到至關重要的作用 因為專案上線後不允許你除錯,你只能通過log來分析問題。專案出問題時,你要能拿出log證明自己負責的部分沒有問題,如果是自己的問題,要從log裡快速找出錯誤原因
關於log級別
曾經在面試的時候被問到過的問題 直到忙到今天才有時間對這個問題進行詳細了解
log4j定義了8個級別的log(除去off和all,可以說分為6個級別),優先順序從高到低依次為:off、fatal、error、warn、info、debug、trace、 all。常用的log級別為 debug info warn error 其級別依次遞增
而通常情況下 debug 和info的使用會極為頻繁
1.error:
error是錯誤的意思,但不代表出現異常的地方就該打error。我認為error是相對程式正確執行來說的,如果出現了error那就代表出問題了,開發人員必須要查一下原因,或許是程式問題,或許是環境問題,或許是理論上不該出錯的地方出錯了。總之,如果你覺得某個地方出問題時需要解決,就打error,如果不需要解決就不要打error。
2.warn:
warn是指出現了不影響程式正確執行的問題,warn也是問題但不影響程式正常執行,如果warn出現的過於頻繁或次數太多,那就代表你要檢查一下程式或環境或依賴程式是否真的出問題了。
假如你訪問乙個介面,設定了乙個超時,超時之後會拋異常,你在try塊裡不該打error也不該打info來無視它,這時你應該打warn,緊緊是警告一下,如果超時過多那就該檢查一下了,是不是對方介面有問題了或者是網路環境出問題了。
3.info和debug:
error和warn是指有問題,而info和debug就是指一般的資訊了。在程式出問題時,如果這條log可以幫助你分析問題或檢視程式的運**況,那就應該打個info。如果僅僅是為了在除錯階段檢視程式是否執行正確那就要打debug。前邊討論的介面引數錯誤問題,就應該打個info了,呼叫者說你的介面總是返回錯誤**,你可以告訴他,是他的哪個引數傳錯了。
1. 修改(包括新增)操作必須列印日誌
大部分問題都是修改導致的。資料修改必須有據可查。
2. 條件分支必須列印條件值,重要引數必須列印
尤其是分支條件的引數,列印後就不用分析和猜測走那個分支了,很重要!如下面**裡面的usertype,一定要列印值,因為他決定了**走那個分支。
有異常一定打日誌麼?
時間、類名及函式名,行號、執行緒號等等列印日誌的方法
通常win系統下會安裝securecrt來連線跳板機 進入後可使用tail 或cat 系列指令來檢視日誌檔案
有些公司會使用linux系統 通過kerbers來管理登入許可權 登入後切換碟符找到日誌檔案即可
參閱文件 十分感謝
關於日誌的一些操作
常用的系統日誌如下 核心啟動日誌 var log dmesg 系統報錯日誌 var log messages 郵件系統日誌 var log maillog ftp系統日誌 var log xferlog 安全資訊和系統登入與網路連線的資訊 bar log secure 登入記錄 var log wt...
關於HTTP的一些學習
第一次進入乙個 時,本地無快取,response成功返回200 伺服器在response header裡,設定了etag和last modify,如下圖 etag欄位將資源唯一性的標識,如果資源有更新,etag值也將變化 last modify表明了在伺服器端最後發生改變的時間 瀏覽器儲存這個eta...
關於gcc的一些學習
參考部落格 c原始檔到可執行檔案共經歷了4個過程。包括預處理 編譯 彙編 鏈結。為了方便好記,可以採用記錄單條編譯命令的方式,這樣可以把命令也一起記下來。比如 esco gcc e hello.c hello.i 編譯器將hello.c預處理結果輸出 hello.i 檔案。這是我本地的hello.c...