Java開發之log日誌的使用盡量不用e.printStackTrace

在Java開發中,無論是運行還是調試,一般都會對異常進行處理,一則明確問題出在哪個地方,一則也是代碼完整性的一部分。談到log日誌,小編建議初學java的朋友使用框架集成的log4j、logback這類統一打印日誌,儘量不使用catch的e.printStackTrace(),爲什麼呢?下面我們來做簡單介紹。

爲什麼儘量不用e.printStackTrace

直接用e.printStackTrace來打印日誌有錯嗎?當然不錯,但是不好。主要原因有以下幾點:

1、佔用太多內存,造成鎖死

要打印字符串輸出到控制檯上,需要字符串常量池所在的內存塊有足夠的空間。然而,因爲e.printStackTrace() 語句要產生的字符串記錄的是堆棧信息,太長太多,內存被填滿了!大量線程產出字符串產出到一半,等待有內存被釋放,鎖死了,導致整個應用掛掉了。

2、日誌交錯混合,不易讀

從開始學習java,老師就教我們寫代碼要具有可讀性,易讀性。同樣,日誌的輸出如果不具有易讀性,也是讓程序員非常頭疼的一件事。那麼爲什麼e.printStackTrace輸出的日誌具有不易讀性了呢?

printStackTrace()默認使用了System.err輸出流進行輸出,與System.out是兩個不同的輸出流,那麼在打印時自然就形成了交叉。再就是輸出流是有緩衝區的,所以對於什麼時候具體輸出也形成了隨機。

Log4j的使用

1、首先,引入log4j.jar,在web.xml中配置log4j的訪問配置。

 

 

2、在log4j.properties中配置log4j的輸出級別信息

 

3、在action中定義log

private Logger log = Logger.getLogger(HomeAction.class);

log.info("這裏就可以寫入日誌信息了");

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章