我添加了Java类的日志记录。特别是 logger.debug 级别(用于开发模式)。
至于在公共方法中调用的私有方法,是否有意在私有方法中提供日志记录?是否有效?
谢谢。
答案 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一样,第二种形式删除了在日志语句之前检查日志级别的需要。