關(guān)于日志方面的一些感悟。
隨著學習的逐漸深入,越來越感覺通過日志排查線上運行腳本的異常情況真的很重要,所以我認為程序的健壯很需要運行日志的支撐!
-
日志應(yīng)該怎樣添加呢?
- 首先應(yīng)該建立自己的日志類
- 其次找到程序中的關(guān)鍵點,進行日志輸出
- 第三日志輸出盡量在程序底層,盡量不要放在業(yè)務(wù)層進行輸出
下面分別說一下:
-
建立自己的日志類:
比如python中提供的logging模塊,我們可以根據(jù)模塊中提供的功能進行二次封裝,從而達到自定義輸出的效果,例如:控制日志的輸出級別、控制日志的記錄字段屬性、定義日志文件大小、定義日志文件存放路徑、定義日志刪除機制
參照:日志類
-
程序中添加日志的關(guān)鍵點:
在狀態(tài)產(chǎn)生變化的地方添加日志
關(guān)鍵階段狀態(tài)記錄,對于程序運行情況更加了解系統(tǒng)入口與出口
例如:運行的環(huán)境不同,此時輸出一個日志會節(jié)省很多排查問題的時間請求異常
這種日志的必然要添加的,在處理異常請求的時候,一定要把異常信息存起來,日后在排查問題的時候這是主要依據(jù)非預(yù)期執(zhí)行
字面可以理解,我們不想看到的情況發(fā)生了,此時我們要記下來,結(jié)合前面的日志分析出現(xiàn)原因很少出現(xiàn)的else情況
else 可能吞掉你的請求,或是賦予難以理解的最終結(jié)果-
程序運行狀態(tài)
- 程序運行時間
- 大批量數(shù)據(jù)的執(zhí)行進度
- 關(guān)鍵變量及正在做哪些重要的事情
執(zhí)行關(guān)鍵的邏輯,做IO操作等等
-
避免在業(yè)務(wù)層添加日志
業(yè)務(wù)層處理的全部為業(yè)務(wù)邏輯相關(guān)事情,相對來說比較零散,分散度比較高,例如:最簡單的模型【方法實現(xiàn)+業(yè)務(wù)】,一般在方法封裝的比較完整情況下,業(yè)務(wù)層中,也只是拼裝方法,從而達到實現(xiàn)業(yè)務(wù)邏輯的效果;既然是這樣,那我們還不如就在方法層中添加日志了,能達到在業(yè)務(wù)層中添加日志同樣的效果,最主要的是還能一勞永逸;
一點不成熟的小想法,后期在持續(xù)增加
@雨 --2016-10-27 16:40:04