在不少狀況下,咱們都會使用 SLF4J 來定義日誌。ide
那麼如何定義一個 Logger 呢?spa
相信絕大部分人都會定義爲:日誌
private static final Logger logger = LoggerFactory.getLogger(BigDecimalDemoUnitTest.class);
可是咱們爲何要使用 private static final 來進行修飾呢?orm
private – 沒有其餘類能夠劫持你的日誌blog
static – 由於使用了靜態,因此每個類就只有一個日誌,同時能夠避免嘗試序列化日誌繼承
final – 在類的生命週期中,不須要修改日誌生命週期
同時,你能夠定義變量 log 來替代 logger,這樣可以減小輸入的字符數。固然這個也須要根據你的項目要求來定了。ci
固然還有下面的一種狀況,考察日誌代碼:get
protected final Logger log = LoggerFactory.getLogger(getClass());
上面有關日誌的定義與咱們的規則是徹底相反的。it
上面的代碼容許你在全部具備繼承關係的類中使用相同的日誌名(與實際的類名相同)。
例如:
若是類 Bar Extends Foo,那麼上面 2 個類的日誌將會 log 到 Bar logger 中。