log中打印e異常信息的堆棧


大家都知道,網站在運行的過程中,打印必要的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);

這樣也會打印異常的堆棧信息


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM