在普通Java 6环境中:
Logger l = Logger.getLogger("nameless");
l.setLevel(Level.ALL);
l.fine("somemessage");Eclipse控制台中没有显示任何内容。l.info("")和上面的功能很好,但是任何低于好的东西似乎都不起作用。可能出什么事了?蒂娅。
发布于 2009-01-22 19:30:06
即使将Logger级别设置为ALL,但ConsoleHandler (记录器上的默认处理程序)仍然具有默认的信息级别。这来自JAVA_HOME/jre/lib中的默认logging.properties
发布于 2009-06-11 13:55:21
与其循环遍历所有处理程序和设置日志记录级别,我更愿意只设置控制台处理程序的级别:
//get the top Logger
Logger topLogger = java.util.logging.Logger.getLogger("");
// Handler for console (reuse it if it already exists)
Handler consoleHandler = null;
//see if there is already a console handler
for (Handler handler : topLogger.getHandlers()) {
if (handler instanceof ConsoleHandler) {
//found the console handler
consoleHandler = handler;
break;
}
}
if (consoleHandler == null) {
//there was no console handler found, create a new one
consoleHandler = new ConsoleHandler();
topLogger.addHandler(consoleHandler);
}
//set the console handler to fine:
consoleHandler.setLevel(java.util.logging.Level.FINEST);发布于 2009-10-22 18:52:51
在我的工作场所,一位当地人发现了以下几点工作:
public class Foo {
private final static Logger logger = Logger.getLogger(Foo.class.getName());
public static final void main(String[] args) {
ConsoleHandler ch = new ConsoleHandler();
ch.setLevel(Level.FINEST);
Foo.logger.addHandler(ch);
Foo.logger.setLevel(Level.FINEST);
Foo.logger.finest("test");
}
}如果您只是将根或处理程序设置为最优秀(独占),那么它就无效了。当我将两者都设置为FINEST时,它就起作用了。他的解释是:
记录器及其处理程序都有日志级别…过滤的顺序是Logger,然后是处理程序。这意味着它检查日志消息是否首先传递记录器筛选器,然后将消息发送到各个处理程序进行筛选。
他还用以下例子对此作了解释:
Logger myLogger有一个级别的FINEST,单个ConsoleHandler myHandler具有一个级别的INFOmyLogger.fine("foo")à消息,使其通过记录器的过滤器,但通过处理程序的过滤器…获得阻止没有任何output.myLogger.info("foo") a通过两个过滤器,foo被输出。现在是…
Logger myLogger有一个级别的INFO和一个具有一个级别的FINESTmyLogger.fine("foo")à消息的ConsoleHandler myHandler被记录器的过滤器阻止,并且永远不会到达处理程序.没有任何output.myLogger.info("foo") a通过两个过滤器,foo被输出。现在是…
Logger myLogger有一个FINEST级别和一个单独的ConsoleHandler myHandler级别,其中有一个级别的FINEST需要通过两个过滤器,而"foo“则是通过两个过滤器,foo是输出的。https://stackoverflow.com/questions/470430
复制相似问题