大家都知道,網站在運行的過程中,打印必要的log對記錄網站的運行情況、從而分析程序問題是很重要的。在Java工程里面配置好log4j之后就可以進行log記錄了。
log分為幾個級別:error、info、debug、fatal,應根據網站的具體情況,配置合適的level。
例子:
log.error("libzone.cn exception:鏈接數據庫出錯")
log.info("libzone.cn exception:鏈接數據庫出錯")
log.debug("libzone.cn exception:鏈接數據庫出錯")
log.fatal("libzone.cn exception:鏈接數據庫出錯")。
有時候,我們有必要把出錯時候的異常信息打印進log里面,例子:
}catch (Exception e){
e.printStackTrace();
log.error("libzone.cn exception:" + e);
//log.info("libzone.cn exception:" + e);
//log.debug("libzone.cn exception:" + e);
//log.fatal("libzone.cn exception:" + e);
}
以這種方式,指的是以"libzone.cn exception:" + e這種方式打印異常的時候,只會打印一個異常的概要信息,例子如下:
libzone.cn exception:com.BusinessException: java.lang.NullPointerException
有時候,這樣的一個概要性的異常信息對於分析問題幫助不大,有可能我們想把異常的堆棧具體信息打印在log里面,那怎么在log.error()里面把e.printStackTrace的堆棧具體信息打印出來呢?這時候我們要以log.XXX(Object obj,Thowable e)這種方式,也就是要將異常對象作為第二個參數傳遞到log的方法中。例子如下:
}catch (Exception e){
e.printStackTrace();
log.error("libzone.cn exception:", e);
//log.info("libzone.cn exception:", e);
//log.debug("libzone.cn exception:", e);
//log.fatal("libzone.cn exception:", e);
}
這樣,我們就可以在log日志里面看到類似於控制台(console)里面那樣的異常詳細信息了。
如果全部把異常詳細打印出來,有可能造成日志文件會很大;打印概要信息,可能對分析問題幫助不大。應根據自己的實際情況,選擇合適的方式。
當調用
log.error("libzone.cn exception:={}----->>{},異常信息","1111","22222", e);
這樣也會打印異常的堆棧信息
