Java 定義一個日誌的時候應該如何定義

在不少狀況下,咱們都會使用 SLF4J 來定義日誌。日誌

那麼如何定義一個 Logger 呢?code

相信絕大部分人都會定義爲:繼承

private static final Logger logger = LoggerFactory.getLogger(BigDecimalDemoUnitTest.class);生命週期

可是咱們爲何要使用 private static final 來進行修飾呢?ci

  • private – 沒有其餘類能夠劫持你的日誌
  • static – 由於使用了靜態,因此每個類就只有一個日誌,同時能夠避免嘗試序列化日誌
  • final – 在類的生命週期中,不須要修改日誌

同時,你能夠定義變量 log 來替代 logger,這樣可以減小輸入的字符數。固然這個也須要根據你的項目要求來定了。get

固然還有下面的一種狀況,考察日誌代碼:it

protected final Logger log = LoggerFactory.getLogger(getClass());class

上面有關日誌的定義與咱們的規則是徹底相反的。變量

上面的代碼容許你在全部具備繼承關係的類中使用相同的日誌名(與實際的類名相同)。序列化

例如:

若是類 Bar Extends Foo,那麼上面 2 個類的日誌將會 log 到 Bar logger 中。

相關文章
相關標籤/搜索