我正在使用 java.util.logging
我有一个 foo 函数:
public String foo() {
System.out.println("syso ==> foo");
return "foo";
}
当我更改日志级别时,我不希望 foo 被执行!
Logger logger = Logger.getLogger(MyClass.class.getSimpleName());
FileHandler fileHandler = new FileHandler("myapp.log");
logger.addHandler(fileHandler);
logger.setLevel(Level.SEVERE);
logger.info("Write foo: " + foo() );
logger.severe("Test severe");
我知道 logger.info()
不会打印在日志文件中,但为什么要执行 foo()
?
我该如何解决?
谢谢
最佳答案
虽然它不显示该文本,但该行确实被执行了,因为该行不是注释。
如果使用 Apache Logger,则尝试以这种方式使用 Logger.isInfoEnabled()
方法:-
if(logger.isInfoEnabled()){
logger.info("Write foo: " + foo() );
}
否则,如果它是 jdk 记录器,则按照 @n1ckolas 的建议使用以下方法
if (logger.isLoggable(Level.INFO)) {
logger.info("Write foo: " + foo() );
}
关于当级别严重时,Java 日志记录不执行信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15109223/