正確的打日誌姿勢

2021-07-24 02:45:16 字數 2031 閱讀 2751

程式中記錄日誌一般有兩個目的:troubleshooting和顯示程式執行狀態。好的日誌記錄方式可以提供我們足夠多定位問題的依據。 

這周看過很多**,對裡面的日誌記錄方式有些想法,今天是週末,也想總結下我對這個問題的看法。日誌記錄大家都會認為簡單,但如何通過日誌可以高效定位問題可不是簡單的事情。這裡我會寫下面三個方面的內容,主要是舉例為主,提醒我以後得注意這些方面 

方便troubleshooting的日誌:

對外部的呼叫封裝:

程式中對外部系統與模組的依賴呼叫前後都記下日誌,方便介面除錯。出問題時也可以很快理清是哪塊的問題

狀態變化: 

程式中重要的狀態資訊的變化應該記錄下來,方便查問題時還原現場,推斷程式執行過程

boolean isrunning;  

isrunning = true;

log.info("system is running");

//...

isrunning = false;

log.info("system was interrupted by " + thread.currentthread().getname());

系統入口與出口: 

這個粒度可以是重要方法級或模組級。記錄它的輸入與輸出,方便定位

void execute(object input)

業務異常: 

任何業務異常都應該記下來

try  catch (ioexception e)  catch (busines***ception e)  catch (exception e)   

void invoke(object primaryparam)   

}  非預期執行: 

為程式在「有可能」執行到的地方列印日誌。如果我想刪除乙個檔案,結果返回成功。但事實上,那個檔案在你想刪除之前就不存在了。最終結果是一致的,但程式得讓我們知道這種情況,要查清為什麼檔案在刪除之前就已經不存在呢

int myvalue = ***x;  

int absresult = math.abs(myvalue);  

if (absresult < 0)   

很少出現的else情況: 

else可能吞掉你的請求,或是賦予難以理解的最終結果

object result = null;  

if (running) else

程式執行狀態

程式在執行時就像乙個機械人,我們可以從它的日誌看出它正在做什麼,是不是按預期的設計在做,所以這些正常的執行狀態是要有的。 

程式執行時間:

long starttime = system.currenttime();  

// business logical

log.info("execution cost : " + (system.currenttime() - starttime) + "ms");

大批量資料的執行進度

log.debug("current progress: " + (currentpos * 100 / totalamount) + "%");

關鍵變數及正在做哪些重要的事情: 

執行關鍵的邏輯,做io操作等等

string getjvmpid()   

void invokeremotemethod(object params)

避免的日誌方式

無意義的log: 

日誌不包含有意義的資訊: 你肯定想知道的是哪個檔案不存在吧

file file = new file("***");  

if (!file.i***ist())

logback打日誌正確姿勢

logback動態修改包名的日誌級別 param level 日誌級別 param packagename 包名 return public string updatelogbacklevel requestparam value level string level,requestparam va...

Java日誌正確使用姿勢

前言 關於日誌,在大家的印象中都是比較簡單的,只須引入了相關依賴包,剩下的事情就是在專案中 盡情 的列印我們需要的資訊了。但是往往越簡單的東西越容易讓我們忽視,從而導致一些不該有的bug發生,作為一名嚴謹的程式設計師,怎麼能讓這種事情發生呢?所以下面我們就來了解一下關於日誌的那些正確使用姿勢。正文 ...

Java日誌正確使用姿勢

前言 關於日誌,在大家的印象中都是比較簡單的,只須引入了相關依賴包,剩下的事情就是在專案中 盡情 的列印我們需要的資訊了。但是往往越簡單的東西越容易讓我們忽視,從而導致一些不該有的bug發生,作為一名嚴謹的程式設計師,怎麼能讓這種事情發生呢?所以下面我們就來了解一下關於日誌的那些正確使用姿勢。正文日...