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