[LOGBack] "hidden" cost of parameter construction

以往寫程式的時候,對於log的使用通常像這樣:

1
logger.debug("The new entry is "+entry+".");

但是這樣的做法會有效能影響。
不管log debug模式是否有打開,都會將"The new entry is "+entry+"."轉成字串。

entry是一個很大的物件,且在production環境(log debug模式是關閉),很有可能造成效能低落。

較好的作法如下(只有在log debug模式是打開的時候,才會將"The new entry is "+entry+"."轉成字串):

1
logger.debug("The new entry is {}.", entry);

有多個參數的時候:

1
2
Object[] paramArray = {newVal, below, above};
logger.debug("Value {} was inserted between {} and {}.", paramArray);

參考資料:

http://logback.qos.ch/manual/architecture.html