2014-09-24 97 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 
相關問題