如果在logging.properties中指定,则自定义格式化程序不起作用

时间:2014-09-24 12:43:17

标签: java java.util.logging

我有自定义格式化程序,我希望在我的应用程序中使用它来实际记录日志之前的日志。

我的格式化程序看起来像......

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服务器,但仍然无法访问我的自定义日志消息。我的代码在这里出了什么问题?

1 个答案:

答案 0 :(得分: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