Java 如果日志记录级别为info,logger.debug是否可能产生错误
我是个新手,我只是想问一下,如果我的日志级别是info,我是否会出错,然后我得到了如下信息:Java 如果日志记录级别为info,logger.debug是否可能产生错误,java,logging,Java,Logging,我是个新手,我只是想问一下,如果我的日志级别是info,我是否会出错,然后我得到了如下信息: logger.debug("hello " + object.getMethod()); 它不在如下所示的if块内: if(LOGGER.isDebugEnabled){...} 此外,它还会影响应用程序的响应时间。如果它不在If block语句中 所有日志方法也在内部检查级别。我们使用的原因是xyzenabled方法(如果用于性能) 考虑以下呼吁: logger.debug(“myObject的值
logger.debug("hello " + object.getMethod());
它不在如下所示的if块内:
if(LOGGER.isDebugEnabled){...}
此外,它还会影响应用程序的响应时间。如果它不在If block语句中 所有日志方法也在内部检查级别。我们使用
的原因是xyzenabled
方法(如果用于性能)
考虑以下呼吁:
logger.debug(“myObject的值为:”+hugeObject.toString());
并假设hugeObject
正如其名称所示,是巨大的。构造它的字符串表示可能既耗时又占用内存,而且最终毫无意义,因为在创建字符串之后,如果级别未设置为调试,则不会记录任何内容。相反,您可以在执行此对话之前显式检查级别,并节省可能需要的时间:
if(logger.isDebugEnabled()){
debug(“myObject的值为:”+hugeObject.toString());
}
所有日志方法也会在内部检查级别。我们使用的原因是xyzenabled
方法(如果用于性能)
考虑以下呼吁:
logger.debug(“myObject的值为:”+hugeObject.toString());
并假设hugeObject
正如其名称所示,是巨大的。构造它的字符串表示可能既耗时又占用内存,而且最终毫无意义,因为在创建字符串之后,如果级别未设置为调试,则不会记录任何内容。相反,您可以在执行此对话之前显式检查级别,并节省可能需要的时间:
if(logger.isDebugEnabled()){
debug(“myObject的值为:”+hugeObject.toString());
}
尽管大多数现代日志框架为延迟构建的消息提供了重载。例如,类似于:logger.debug(“myObject的值是:{}”,myObject)
。是的,这是有意义的,还有一个问题,假设我的方法对象.getMethod()返回一个字符串值,这会对性能产生如此巨大的影响吗?@VincentGregory取决于创建这个字符串的成本有多高(这与它的大小密切相关)好的,非常感谢。您完全回答了我的问题。感谢您的帮助尽管大多数现代日志框架为延迟构建的消息提供重载。例如,类似:logger.debug(“myObject的值为:{}”,myObject)
。是的,这是有意义的,还有一个问题,假设我的方法对象。getMethod()返回一个字符串值,这会对性能产生如此巨大的影响吗?@VincentGregory取决于创建这个字符串的成本有多高(它与它的大小密切相关)好的,非常感谢。你完全回答了我的问题。谢谢你的帮助pppp我怎么知道框架是否允许延迟构建消息。java 6支持它吗?Thaks soo非常感谢你的回答,现在对我来说很有意义。谢谢你的帮助。我怎么知道框架是否允许延迟构建消息。java 6支持它吗?Thaks soo m谢谢你的回答,现在我明白了。也谢谢你的帮助