Java如何在记录器处理程序上设置过滤器?

本示例为您提供了有关如何设置Filter记录器处理程序的示例。在下面的代码中,我们在Filter上实现FileHandler仅记录一条Level.SEVERE消息。其他级别的日志将不会记录到文件中。

package org.nhooo.example.util.logging;

import java.util.logging.*;
import java.io.IOException;

public class LoggerFilter {
    public static void main(String[] args) {
        Logger logger = Logger.getLogger(LoggerFilter.class.getName());

        FileHandler handler = null;
        try {
            handler = new FileHandler("myapp.log");
            handler.setFilter(new Filter() {
                public boolean isLoggable(LogRecord record) {
                    // 当LogRecord级别等于Level.SEVERE时 
                    // 消息被记录到文件中。
                    return record.getLevel().equals(Level.SEVERE);
                }
            });
        } catch (IOException e) {
            logger.log(Level.SEVERE, "Fail to create logger handler", e);
        }

        logger.addHandler(handler);

        logger.info("Information message");
        logger.warning("Warning message");
        logger.severe("Severe message");
    }
}