log列印及異常處理相關

2021-09-11 09:17:39 字數 1969 閱讀 4233

title: log列印及異常處理相關 tags:

不得使用system.out, system.err,e.printstacktrace進行日誌記錄,請改使用logger.debug、logger.error

系統中目前採用log4j作為列印輸出使用

privatelogger logger = logger.getlogger(getclass());

privatelogger logger = logger.getlogger(***.class);

獲取對應logger例項

debug/info級別的資訊,資訊本身需要計算或合併的,必須加 is***enabled() 判斷在前,這樣可以大大提高高併發下的效率。如:

if(logger.isdebugenabled())

系統中建議使用自定義異常,譬如丟擲業務異常,不要每次使用new exception 而是應該使用bizexception等自定義異常

異常發生時,捕獲異常並且不加任何處理時可能極大的增加debug成本。希望確實存在如上情況請顯式將改異常名稱設定為ignore,否則idea會有警報

trycatch(nosuchmethodexception | invocationtargetexception | illegalargumentexception | illegalacces***ception | securityexception ignore)

錯誤記錄log日誌格式為

//a

log.error(e);

//b

log.error(e, e);

//c

log.error(""+ e);

//d

log.error(e.tostring());

//e

log.error(e.getmessage());

//f

log.error(null, e);

正確記錄日誌方式為

log.error("e.getmessage()", e);

log.error("error reading configuration file", e);

或者其他更詳細的資訊譬如 錯誤描述 [關鍵資訊]包括執行的引數使用者資訊等等

記錄日誌時確保呼叫日誌處理不會出錯,譬如

log.debug("processing request with id: {}", request.getid());

此處可能報npe

記錄日誌時確保不會列印太多日誌導致拖垮應用,特別是常見切面或者通用處理邏輯處加日誌要注意

日誌輸出級別(由高到低)

log4j列印異常資訊,未列印堆疊

使用logger.error方法時只能列印出異常型別,無法列印出詳細的堆疊資訊,使得定位問題變得困難和不方便。logger類下有多個不同的error方法,根據傳入引數的個數及型別的不同,自動選擇不同的過載方法。當error object obj 只傳入乙個引數時會將異常物件作為object使用,並最...

IIS 相關異常處理

1.cs0246 未能找到型別或命名空間名稱 1.1 dll的net版本不一致 1.2 iis目錄裡bin資料夾不在根目錄 2.http 錯誤 500.21 internal server error處理程式 2.1可能選安裝framwork,然後開啟的iis導致framwork沒有註冊 執行 cm...

Python之異常及異常處理

在python中,萬物皆物件.所以異常在python中也是物件.當程式無法正常執行 時,就會丟擲乙個異常,程式就會執行回溯 traceback 來終止程式.但有時候這並 不是我們想要看到的,程式需要繼續執行下去,這時候就需要對異常進行處理.捕捉異常可以使用try except語句。try excep...