天天看點

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

在很多情況下,我們都會使用 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 中。

link