我有一个应用程序,我希望日志记录级别设置为INFO
,除非设置了调试模式,在这种情况下,我想将级别设置为FINEST
。是否有可能以编程方式覆盖java.util.logging的properties文件中设置的值?
如果我设置的属性级别文件,它不会从程序中使用logger.setLevel(Level.FINEST)
也是,如果我不设置在属性.level
领域文件什么,默认情况下,信息水平拍摄,并再次得到重写我如果isDebugEnable()不能覆盖使用FINEST
。
如何根据条件使此级别可配置?
try(InputStream configFile = getClass().getClassLoader().getResourceAsStream("logging.properties")) {
LogManager.getLogManager().readConfiguration(configFile);
} catch (IOException e) {
throw new IllegalStateException("Unable to load default logging properties.", e);
}
if (isDebugEnabled()) {
logger.setLevel(Level.FINEST);
} else {
logger.setLevel(Level.INFO);
}
我的配置文件如下:
handlers= java.util.logging.ConsoleHandler
.level= INFO
# default file output is in user's home directory.
java.util.logging.FileHandler.pattern = %h/java%u.log
java.util.logging.FileHandler.limit = 50000
java.util.logging.FileHandler.count = 1
java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter
# Enable console to set level to FINEST and above.
java.util.logging.ConsoleHandler.level = FINEST
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
我可以用这个作为跟随做的,但想知道是否有更好的方法来做到这一点。 (可能使用属性文件)
ConsoleHandler consoleHandler = new ConsoleHandler();
setLogLevel();
consoleHandler.setLevel(Level.FINEST);
logger.addHandler(new ConsoleHandler());
[Java - 动态更改日志记录级别]的可能重复(https://stackoverflow.com/questions/13760095/java-dynamically-change-logging-level) – Avinash