Log4j 2 API
Scala API
Log4j 2包含一个方便的Logger API的Scala包装器。
条件
Log4j 2 Scala API依赖于Log4j 2 API,Scala运行时库和反射。它目前支持Scala 2.10和2.11。请参阅将此包含在SBT、Maven、Ivy或Gradle项目中的说明。
示例
import org.apache.logging.log4j.scala.Logging
import org.apache.logging.log4j.Level
class MyClass extends BaseClass with Logging {
def doStuff(): Unit = {
logger.info("Doing stuff")
}
def doStuffWithLevel(level: Level): Unit = {
logger(level, "Doing stuff with arbitrary level")
}
}
调用logger.info()的输出讲明显不同,具体取决于所使用的配置。有关更多详细信息,可参阅配置部分。
参数替换
通常,记录的目的是提供关于系统中正在发生什么的信息,这需要包括关于被操作的对象的信息。在Scala中,可以使用字符串插值来实现:
logger.debug(s"Logging in user ${user.getName} with birthday ${user.calcBirthday}")
由于Scala Logger是用宏实现的,因此String构造和方法调用只会在启用调试日志记录时才会发生。
记录器名称
大多数日志记录实现使用分层方案将记录器名称与日志记录配置相匹配。在此方案中,记录器名称层次结构由“.”表示。记录器名称中的字符,其方式非常类似于用于Java/Scala程序包名称的层次结构。日志特质会自动将记录器命名为其使用的类。