有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

父类中的java日志记录静态方法

我有一个抽象类Parent,有两个子类A和B。Parent有一个静态方法do()。我想知道是否有一种方法可以让该静态方法在类a的Logger中添加日志信息(当它被称为a.do()时),以及在类B的Logger中添加日志信息(当它被称为B.do()时)。照常

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

不会工作,因为do()是一个静态方法,所以记录器也需要是静态的,但是getClass()方法显然不是静态的

谢谢


共 (3) 个答案

  1. # 1 楼答案

    最佳实践是声明记录器为静态,例如

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

    通过这种方式,您可以使用动态和静态方法中的记录器

    此外,每个类都应该有自己的记录器实例。所以我会改成私人

    此外,你应该调用“MyApp.class”,而不是调用“getClass()”

    private final static Logger LOGGER = Logger.getLogger(MyApp.class);
    
  2. # 2 楼答案

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

    每个类都有自己的logger:指定类就可以了

  3. # 3 楼答案

    我不推荐,但如果你真的想要的话

    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);
      }
    }