如何在实际记录调试语句之前检查是否启用了某个日志记录级别?
答案 0 :(得分:4)
是的,它提供了 -
Logger#isLoggable(Level level)
检查是否实际记录了给定级别的消息 记录仪。此检查基于Loggers有效级别,可以 继承自其父母。
答案 1 :(得分:0)
使用 Java 或 (SLF4J) 的 Simple Logging Facade - http://www.slf4j.org/faq.html#logging_performance 可以完全避免检查日志记录级别。在参数化消息的情况下
Object entry = new SomeObject();
logger.debug("The entry is {}.", entry);
在评估是否记录后,并且只有当决定是肯定的时,记录器实现才会格式化消息并将“{}”对替换为条目的字符串值。换句话说,这种形式在禁用日志语句的情况下不会产生参数构建的成本。
以下两行将产生完全相同的输出。但是,在禁用日志记录语句的情况下,第二种形式的性能将比第一种形式高出至少 30 倍。
logger.debug("The new entry is "+entry+".");
logger.debug("The new entry is {}.", entry);