Java 定義一個日誌的時候應該如何定義
- 2020 年 2 月 26 日
- 筆記
在很多情況下,我們都會使用 SLF4J 來定義日誌。
那麼如何定義一個 Logger 呢?
相信絕大部分人都會定義為:
private static final Logger logger = LoggerFactory.getLogger(BigDecimalDemoUnitTest.class);
但是我們為什麼要使用 private static final 來進行修飾呢?
- private – 沒有其他類可以劫持你的日誌
- static – 因為使用了靜態,所以每一個類就只有一個日誌,同時可以避免嘗試序列化日誌
- final – 在類的生命周期中,不需要修改日誌
同時,你可以定義變數 log 來替代 logger,這樣能夠減少輸入的字元數。當然這個也需要根據你的項目要求來定了。
當然還有下面的一種情況,考察日誌程式碼:
protected final Logger log = LoggerFactory.getLogger(getClass());
上面有關日誌的定義與我們的規則是完全相反的。
上面的程式碼允許你在所有具有繼承關係的類中使用相同的日誌名(與實際的類名相同)。
例如:
如果類 Bar Extends Foo,那麼上面 2 個類的日誌將會 log 到 Bar logger 中。