您是否为私有方法提供DEBUG日志记录级别?

时间:2010-12-29 09:26:32

标签: java debugging logging methods private

我添加了Java类的日志记录。特别是 logger.debug 级别(用于开发模式)。

至于在公共方法中调用的私有方法,是否有意在私有方法中提供日志记录?是否有效?

谢谢。

4 个答案:

答案 0 :(得分:2)

这不一定是效率问题。你必须问自己:“这种私人方法是否做了值得记录的事情?”

为了避免性能问题,您可以在实际记录这些消息之前,始终检查记录器是否记录调试消息。在log4j中,你要写

if (logger.isDebugEnabled()) {
  logger.debug("complicated" + "innefficient" + "string concatenation");
}

我想,其他伐木工提供类似的概念

答案 1 :(得分:1)

是的,如果你想在维护模式或开发中“调试”私有方法,为什么不呢? 在生产中,您将设置您的日志记录级别警告或错误!这取决于你...

答案 2 :(得分:1)

当然。私有方法通常隐藏实现细节,这就是大多数bug潜伏的地方。将您的日志记录语句放在您认为需要的位置,并在生产中禁用它们。

答案 3 :(得分:1)

当你不需要它时,记录可能看起来很浪费,但是当你这样做时它是必不可少的。始终在您的类和函数中提供有意义的日志消息。您可以使用日志级别过滤掉噪音,并在需要时增加详细程度。好的记录器提供了在运行时更改日志级别的功能。

但是,如果您担心性能无论出于何种原因,您可以使用一些简单的防护来减少日志记录的开销,尤其是调试日志记录,这很少见。例如,使用log4j / slf4j,您可以将日志调试语句包装在:

if(logger.isDebugEnabled()) {
    logger.debug("something");
}

slf4j还具有类似printf的语法,如果日志级别正确,它只会进行字符串格式化。

logger.debug("Object {} is not valid!", obj);

与darioo一样,第二种形式删除了在日志语句之前检查日志级别的需要。