程式中記錄日誌一般有兩個目的:troubleshooting和顯示程式執行狀態。好的日誌記錄方式可以提供我們足夠多定位問題的依據。日誌記錄大家都會認為簡單,但如何通過日誌可以高效定位問題並不是簡單的事情。這裡列舉下面三個方面的內容,輔以**示例,總結如何寫好日誌,希望對他人有所啟發和幫助:
1. 對外部的呼叫封裝
程式中對外部系統與模組的依賴呼叫前後都記下日誌,方便介面除錯。出問題時也可以很快理清是哪塊的問題
1. log.debug("calling external system:" + parameters);2.狀態變化2. object result = null;
3. try catch (exception e)
程式中重要的狀態資訊的變化應該記錄下來,方便查問題時還原現場,推斷程式執行過程
3.系統入口與出口:
1. boolean isrunning;這個粒度可以是重要方法級或模組級。記錄它的輸入與輸出,方便定位2.
3. isrunning = true;
4. log.info("system is running");
5.
6. //...
7.
8. isrunning = false;
9. log.info("system was interrupted by " + thread.currentthread().getname());
1. void execute(object input)4.業務異常:
任何業務異常都應該記下來:
1. try catch (ioexception e) catch (busines***ception e) catch (exception e)5.非預期執行:10.
為程式在「有可能」執行到的地方列印日誌。如果我想刪除乙個檔案,結果返回成功。但事實上,那個檔案在你想刪除之前就不存在了。最終結果是一致的,但程式得讓我們知道這種情況,要查清為什麼檔案在刪除之前就已經不存在
1. int myvalue = ***x;6.很少出現的else情況:2. int absresult = math.abs(myvalue);
3. if (absresult < 0)
else可能吞掉你的請求,或是賦予難以理解的最終結果
1. object result = null;程式在執行時就像乙個機械人,我們可以從它的日誌看出它正在做什麼,是不是按預期的設計在做,所以這些正常的執行狀態是要有的。2. if (running) else
1. long starttime = system.currenttime();2. 大批量資料的執行進度:2.
3. // business logical
4.
5. log.info("execution cost : " + (system.currenttime() - starttime) + "ms");
1. log.debug("current progress: " + (currentpos * 100 / totalamount) + "%");3.關鍵變數及正在做哪些重要的事情:
執行關鍵的邏輯,做io操作等等
1. string getjvmpid()1. 混淆資訊的log7.
8. void invokeremotemethod(object params)
日誌應該是清晰準確的: 當看到日誌的時候,你知道是因為連線池取不到連線導致的問題麼?
1. connection connection = connectionfactory.getconnection();2. 記錯位置2. if (connection == null)
產品**中,使用console記錄日誌,導致沒有找到日誌。
1. } catch (configurationexception e)3. 記錯級別
記錯級別常常發生,常見的如:混淆**錯誤和使用者錯誤,如登入系統中,如果惡意登入,那系統內部會出現太多warn,從而讓管理員誤以為是**錯誤。可以反饋使用者以錯誤,但是不要記錄使用者錯誤的行為,除非想達到控制的目的。
1. log.warn("failed to login by "+username+");4. 遺漏資訊
這裡可能包含兩種情況:(1)使用者自己少寫了資訊,導致毫無參考價值;(2)使用者呼叫log的方式導致丟失資訊,如下例,沒有stack trace.
1. } catch (exception ex)日誌記錄在程式設計師日常程式設計實踐中必須面對的事情,本文針對這個話題談了下自己的體會,希望讀者能有所收益。多有不足,請多包涵。
日誌記錄的作用和方法
程式中記錄日誌一般有兩個目的 troubleshooting和顯示程式執行狀態。好的日誌記錄方式可以提供我們足夠多定位問題的依據。日誌記錄大家都會認為簡單,但如何通過日誌可以高效定位問題並不是簡單的事情。這裡列舉下面三個方面的內容,輔以 示例,總結如何寫好日誌,希望對他人有所啟發和幫助 相關廠商內容...
關於日誌的那些事
因為專案上線後不允許你除錯,你只能通過log來分析問題。專案出問題時,你要能拿出log證明自己負責的部分沒有問題,如果是自己的問題,要從log裡快速找出錯誤原因。如果沒有從log裡找出錯誤原因,那一定是一件很悲催的事情,特別是在bug不容易重現的情況下。打log的目的是為了迅速排錯或在有爭議時拿出證...
詳解python程式中記錄日誌的方法
日誌可以用來記錄應用程式的狀態 錯誤和資訊訊息,也經常作為除錯程式的工具。它的重要性就不多說了,直接進入正題。python提供了乙個標準的日誌介面,就是logging模組。日誌級別有debug info warning error critical五種。首先來看logging簡單的使用方法。這一看到...