2014-09-24 99 views
0

我有自定义的格式化程序,而且我想在我的应用程序中使用它来在实际记录之前对日志进行fromat处理。如果在logging.properties中指定,自定义格式化程序不起作用

我格式化的样子......

package com.mycomp.logger; 

import java.text.MessageFormat; 

import java.util.Date; 

import java.util.logging.Formatter; 

import java.util.logging.LogRecord; 

public class BnaLogFormatter extends Formatter { 

    private static final DateFormat format 
     = new SimpleDateFormat("MMM dd, yyyy hh:mm:ss a"); 
    private static final String lineSep = System.getProperty("line.separator"); 

    public BnaLogFormatter() { 
     super(); 
    } 

    @Override 
    public String format(LogRecord record) { 
     System.out.println("#### Inside custom formatter ####"); 
     String transactionId = WsUtils.getTransactionIdFromSoapHeader(); 
     String threadName = "[Thread=" + Thread.currentThread().getName() 
       + "] [transactionId=" + transactionId + "] "; 
     String message = record.getMessage(); 
     StringBuilder output = new StringBuilder() 
     .append(format.format(new Date(record.getMillis()))) 
     .append(" ").append(record.getSourceClassName()); 
     output.append(threadName); 
     output.append(record.getLevel()).append(": "); 
     output.append(record.getMessage()); 
     if (record.getParameters() != null) { 
      output.append(StringUtils.toString(record.getParameters())); 
     } 

     output.append(' ').append(lineSep); 
     return output.toString(); 
    } 
} 

在我logging.properties,我有一个这样的条目:

java.util.logging.FileHandler.formatter=com.mycomp.logger.BnaLogFormatter 
java.util.logging.FileHandler.level=OFF 
java.util.logging.FileHandler.pattern=logs/ena.log 

然后我重新启动我的Tomcat服务器,但我仍然很无力到我的自定义日志消息。我的代码在这里有什么问题?

回答

0

将FileHandler的日志级别设置为ALL。

java.util.logging.FileHandler.formatter=com.mycomp.logger.BnaLogFormatter 
java.util.logging.FileHandler.level=ALL 
java.util.logging.FileHandler.pattern=logs/ena.log 
相关问题