访问扩展记录器类中的log4j属性

时间:2016-09-28 14:57:03

标签: java properties log4j

我扩展了Log4j的Logger类。我想要的只是访问log4j.properties文件中的属性。 String dateFormat; 以下是我的代码。

public class TestLogger extends Logger {
    final Logger target;
    String dateFormat; //Need datePatttern from properties file
    SimpleDateFormat format = new SimpleDateFormat("yyyyddMM-HH:mm:ss");

    public TestLogger  (Logger target) {   

        super("");      
        this.target = target;
        /**
         * Some thing that will give me **DateAppender** property 
         * to store in variable 'dateFormat'
         */
    }

    @SuppressWarnings("unused")
    public void error(Object message, String errCode, Throwable t) {
        Logger logger = Logger.getLogger(TestLogger.class);     
        Appender appender = logger.getAppender("filer");        
        Date date = new Date();
        String msg = String.format("%1$-11s %2$-4s %3$-17s %4$s","ERROR",errCode,format.format(date),message+": "+t.getMessage());
        target.error(msg,t);
    }

Log4j.properties文件

log4j.rootLogger=DEBUG,stdout,filer,error
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.datePattern='.'MM/dd/yyyy
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyyddMM-HH:mm:ss} %m%n

log4j.appender.filer=org.apache.log4j.RollingFileAppender 
log4j.appender.filer.layout=org.apache.log4j.PatternLayout
log4j.appender.filer.layout.ConversionPattern=%m%n
log4j.appender.filer.File=./trace.log
log4j.appender.filer.MaxFileSize=5MB
log4j.appender.filer.MaxBackupIndex=5
log4j.appender.filer.append=true

1 个答案:

答案 0 :(得分:0)

首先:如果您想使用新的记录器类,则必须在 Log4j.properties 文件中指定它的全名,因此您必须添加如下所示的行之一。

log4j.logger.com.TestLogger=WARN

请同时注意包裹名称。

属性文件中的每个条目/行都是该特定对象的集合,因此您将自动在对象层次结构(loggert,appender和layout)的字段中找到这些值。