Java.util.logging。 SetLevel 对自定义处理程序没有影响
Java.util.logging. SetLevel has no effect on a custom Handler
在下面的代码示例中,处理程序不考虑对 setLevel 的调用。
Logger globalLogger = Logger.getLogger("");
Handler handler = new LogMailHandler();
handler.setLevel(Level.SEVERE);
globalLogger.addHandler(handler);
Logger local = Logger.getLogger(LogMailHandlerTest.class.getName());
local.severe("Test message severe...");
local.info("Test message info...");
LogMailHandler定义如下:
public class LogMailHandler extends Handler {
@Override
public void publish(LogRecord pRecord) {
System.out.println("Error registered..." + pRecord.getLevel().getName());
}
@Override
public void flush() {
}
@Override
public void close() throws SecurityException {
}
}
输出为:
Jan 19, 2015 5:20:33 PM com.idmedia.fts.exchange.helper.LogMailHandlerTest main
SEVERE: Test message severe...
Error registered...SEVERE
Jan 19, 2015 5:20:33 PM com.idmedia.fts.exchange.helper.LogMailHandlerTest main
INFO: Test message info...
Error registered...INFO
我认为 "Error registered...INFO" 不应该存在,因为处理程序的级别设置为严重。
有什么建议吗?
在控制台上打印之前,您必须使用 boolean isLoggable(LogRecord)
测试 LogRecord on publish 方法。此方法除其他外测试 LogRecord 级别是否高于最低级别(在您的情况下为 SEVERE)
在下面的代码示例中,处理程序不考虑对 setLevel 的调用。
Logger globalLogger = Logger.getLogger("");
Handler handler = new LogMailHandler();
handler.setLevel(Level.SEVERE);
globalLogger.addHandler(handler);
Logger local = Logger.getLogger(LogMailHandlerTest.class.getName());
local.severe("Test message severe...");
local.info("Test message info...");
LogMailHandler定义如下:
public class LogMailHandler extends Handler {
@Override
public void publish(LogRecord pRecord) {
System.out.println("Error registered..." + pRecord.getLevel().getName());
}
@Override
public void flush() {
}
@Override
public void close() throws SecurityException {
}
}
输出为:
Jan 19, 2015 5:20:33 PM com.idmedia.fts.exchange.helper.LogMailHandlerTest main
SEVERE: Test message severe...
Error registered...SEVERE
Jan 19, 2015 5:20:33 PM com.idmedia.fts.exchange.helper.LogMailHandlerTest main
INFO: Test message info...
Error registered...INFO
我认为 "Error registered...INFO" 不应该存在,因为处理程序的级别设置为严重。
有什么建议吗?
在控制台上打印之前,您必须使用 boolean isLoggable(LogRecord)
测试 LogRecord on publish 方法。此方法除其他外测试 LogRecord 级别是否高于最低级别(在您的情况下为 SEVERE)