title: log列印及異常處理相關 tags:
不得使用system.out, system.err,e.printstacktrace進行日誌記錄,請改使用logger.debug、logger.error
系統中目前採用log4j作為列印輸出使用
private
logger logger = logger.getlogger(getclass());
private
logger logger = logger.getlogger(***.
class
);
獲取對應logger例項
debug/info級別的資訊,資訊本身需要計算或合併的,必須加 is***enabled() 判斷在前,這樣可以大大提高高併發下的效率。如:
if
(logger.isdebugenabled())
系統中建議使用自定義異常,譬如丟擲業務異常,不要每次使用new exception 而是應該使用bizexception等自定義異常
異常發生時,捕獲異常並且不加任何處理時可能極大的增加debug成本。希望確實存在如上情況請顯式將改異常名稱設定為ignore,否則idea會有警報
try
catch
(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...