我如何记录扩展类的名称?我想要写“FTSControl”而不是“Control”。Log4j打印扩展类名
public abstract class Control {
Logger logger = Logger.getLogger(getClass());
}
@Component
public class FTSControl extends Control {
}
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{dd.MM.yyyy HH:mm:ss.SSS} %-5p - %C{1}:%m%n" />
</layout>
输出:
09.01.2015 15:58:00.006 WARN - Control: No files found! Hash:-844390824
我还指出sometinh是,
尽管使用相同的记录器实例,log.info()调用在控制和FTSControl的方法打印自己的班级名称。我的意思是在FTSControl打印
09.01.2015 15:58:00.006 WARN - FTSControl : No files found! Hash:-844390824
logger.info()的方法
logger.info()在控制的方法打印
09.01.2015 15:58:00.006 WARN - Control: No files found! Hash:-844390824
//更新完成示例
package com.log;
import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;
import com.log.abstracttest.ControlAbs;
import com.log.abstracttest.ImosControl;
public class LogMainTest {
private Logger logger = Logger.getLogger("console");
public LogMainTest(){
DOMConfigurator.configure(this.getClass().getClassLoader().getResource("log4j.xml"));
logger.info("Initializing...");
ImosControl control = new ImosControl();
control.print();
control.printAll();
}
public static void main(String[] args) {
new LogMainTest();
}
}
package com.log.abstracttest;
import org.apache.log4j.Logger;
public abstract class ControlAbs {
Logger logger = Logger.getLogger(this.getClass());
public void print(){
logger.info(" print");
}
}
package com.log.abstracttest;
public class ImosControl extends ControlAbs {
public void printAll(){
logger.info("printAll");
}
}
输出:
10.01.2015 05:38:43.497 INFO - LogMainTest:Initializing...
10.01.2015 05:38:43.502 INFO - ControlAbs: print
10.01.2015 05:38:43.503 INFO - ImosControl:printAll
我改变了它,因为你说过,BT不起作用 –
检查编辑的答案 –
我已经更新了这个问题,请看问题的结尾。 –