簡體   English   中英

在父類中記錄靜態方法

[英]logging static methods in a parent class

我有一個抽象類Parent,有2個子類A和B。Parent有一個稱為do()的靜態方法。 我想知道是否有一種靜態方法可以在Logger中為類A添加日志信息(稱為A.do()),在日志B中添加日志信息(稱為B.do())。 通常

protected final Logger LOGGER = Logger.getLogger(getClass());

因為do()是靜態方法,所以不會起作用,因此Logger也需要是靜態的,但是getClass()方法顯然不是靜態的。

謝謝。

private final static Logger LOGGER = Logger.getLogger(A.class);

每個類都有自己的logger :指定該類是可以的。

我不推薦,但如果您真的想要...

public class A {
  public static void do() {
    doImpl(A.class);
  }
  protected static void doImpl(Class<?> refClass) {
  }
}

public class B extends A {
  public static void do() {
    doImpl(B.class);
  }
}

最佳做法是聲明LOGGER靜態,例如

protected final static Logger LOGGER = Logger.getLogger(getClass());

這樣,您可以從動態和靜態方法中使用LOGGER。

同樣,每個類都應具有自己的記錄器實例。 所以我將保護改為私有。

另外,應該調用“ MyApp.class”,而不是調用“ getClass()”,例如

private final static Logger LOGGER = Logger.getLogger(MyApp.class);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM