getLog(getClass()) 与 getLog(XXX.class) 的区别

Posted cag2050

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了getLog(getClass()) 与 getLog(XXX.class) 的区别相关的知识,希望对你有一定的参考价值。

在实例方法中引用Log,通常定义一个实例变量:

// 在实例方法中引用Log:
public class Person 
    protected final Log log = LogFactory.getLog(this.getClass());

    void foo() 
        log.info("foo");
    

注意到实例变量log的获取方式是LogFactory.getLog(this.getClass()),虽然也可以用LogFactory.getLog(Person.class),但是前一种方式有个非常大的好处,就是子类可以直接使用该log实例。例如:

// 在子类中使用父类实例化的log:
public class Student extends Person 
    void bar() 
        log.info("bar");
    

由于Java类的动态特性,子类获取的log字段实际上相当于LogFactory.getLog(Student.class),但却是从父类继承而来,并且无需改动代码。

出处:https://www.liaoxuefeng.com/wiki/1252599548343744/1264738932870688

以上是关于getLog(getClass()) 与 getLog(XXX.class) 的区别的主要内容,如果未能解决你的问题,请参考以下文章

常用的打印日志方法

多线程读写多个文件02

多线程读写多个文件01

log4j中Logger.getLogger与LogFactory.getLog的区别

仅将 Spring 页面视图限制为 POST

Logger.getLogger()和LogFactory.getLog()的区别