logback:參數化日志打印


經常能看到打印日志的時候,使用以下這種方式打印日志:

logger.debug("the message is " + msg + " from " + somebody);

這種打印日志的方式有個缺點,就是無論日志級別是什么,程序總要先執行 "the message is " + msg + " from " + somebody 這段字符串的拼接操作。當 logger 設置的日志級別為比 DEBUG 級別更高級別時,DEBUG 級別的信息不回被打印出來的,顯然,字符串拼接的操作是不必要的,當要拼接的字符串很大時,這無疑會帶來很大的性能白白損耗。

於是,一種改進的打印日志方式被人們發現了:

if(logger.isDebugEnabled()) { logger.debug("the message is " + msg + " from " + somebody); }

這樣的方式確實能避免字符串拼接的不必要損耗,但這也不是最好的方法,當日志級別為 DEBUG 時,那么打印這行消息,需要判斷兩次日志級別。一次是logger.isDebugEnabled(),另一次是 logger.debug() 方法內部也會做的判斷。這樣也會帶來一點點效率問題,如果能找到更好的方法,誰願意無視白白消耗的效率。

有一種更好的方法,那就是提供占位符的方式,以參數化的方式打印日志,例如上述的語句,可以是這樣的寫法:

logger.debug("the message {} is from {}", msg, somebody);

這樣的方式,避免了字符串拼接,也避免了多一次日志級別的判斷。


免責聲明!

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



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