我来自Java世界,在Java中我们曾经测试过是否在使用级别调试进行日志记录之前启用了调试。像这样:
if(logger.isDebugEnabled)
logger.debug("Debug")
这是为了避免评估传递给logger.debug
的参数。我们是否必须对scala LazyLogging
trait做同样的事情?
class Test extends LazyLogging{
val veryBigSeq: Seq[String] = //...
logger.debug(veryBigSeq.toString()) //<<----- Here
}
答案 0 :(得分:3)
如您所见,代码
if(logger.isDebugEnabled)
logger.debug("Debug")
非常重复,并且可以很容易地从作为参数传递给logger.debug(...)
的AST部分自动生成。如果没有将其作为宏实现,那将是令人惊讶的。实际上,如果您查看Logger.scala中的实际代码,那么您会发现所有.debug
和.error
方法实际上都是宏。因此,所有样板文件都会自动添加,每个if
周围都不需要.debug
- 。