
384
| 第十三章
我們建議在盡可能高的級別(最接近呼叫或用戶發起的操作)上面 log 錯誤。試著在呼
叫堆疊中多次 log 單一錯誤經常在 log 中加入雜訊,讓你難以追蹤問題。
防範“過度
log
”
log 級別真正強大之處在於,它們可讓你在部署或運行期修改 log 的數
量。例如,如果 app 沒有按照預期執行,運維人員可以啟用更精細的 log
級別,例如
DEBUG
,以獲得更多的資訊。但是,產生額外的 dubug 問題會
降低性能,諷刺的是,當你開始尋找問題時,很多問題就會消失,原因通
常是時機(timing)和記憶體的使用模式會隨著額外的 log 而改變,我們
也看過一個 app 在啟用 log 時完全崩潰,因為它在生產環境中產生 log 敘
句需要極大量的記憶體(相關的
TRACE
敘句一直以來都只在嚴格控制下的
開發環境中使用,而且資料量很少)。
Java 生態系統有好幾種 log 框架可供你選擇。接下來要介紹兩種最熱門的:SLF4J(與
Logback)以及 Log4j 2。
別發明自己的
logger
請不要試著實作你自己的 log 框架,或採取同樣糟糕的做法,直接使用
System.out.println
。現代的 Java log 框架已經有了高度的發展,相較於
直接將細節 echo 到控制台(在容器環境中可能存在,也可能不存在),
它們提供了更多的彈性。
SLF4J
Simple Logging Facade for Java(SLF4J)(
https://www.slf4j.org/
)旨在提供各種