我有一个抽象类Parent,有2个子类A和B. Parent有一个名为do()的静态方法。我想知道是否有一种方法可以让这种静态方法在Logger中为A类添加日志信息,当它被称为A.do()时记录B,当它被称为B.do()时。通常的
protected final Logger LOGGER = Logger.getLogger(getClass());
不起作用,因为do()是一个静态方法,因此Logger也需要是静态的,但getClass()方法显然不是静态的。
感谢。
答案 0 :(得分:0)
private final static Logger LOGGER = Logger.getLogger(A.class);
每个班级都有自己的logger
:指定班级很好。
答案 1 :(得分:0)
我不推荐它,但如果你真的想要它......
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);
}
}
答案 2 :(得分:-1)
最佳做法是将LOGGER声明为静态,例如
protected final static Logger LOGGER = Logger.getLogger(getClass());
这样您就可以使用动态和静态方法中的LOGGER。
此外,每个类都应该有自己的记录器实例。所以我会将protected更改为private。
另外,不要调用“getClass()”,而应调用“MyApp.class”,例如
private final static Logger LOGGER = Logger.getLogger(MyApp.class);