[英]Scala equivalent for Groovy @Slf4j annotation
从Groovy迁移到Scala。 到目前为止,我真的很喜欢Scala,但是我立即就错过了@Slf4j
批注,我可以在其中添加:
@Slf4j
class Fizz {
void doSomething() {
log.info("We're doing something now...")
}
}
...然后Groovy会创建一个SLF4J记录器,并为我将其注入Fizz
的字节码中。 这使我不必在每个班级都要做以下工作:
class Fizz {
Logger log = LoggerFactory.getLogger(Fizz)
void doSomething() {
log.info("We're doing something now...")
}
}
到目前为止,我真的很想念这个。
我想知道是否可以使用traits / mixins来做到这一点,但是它必须是通用的,因此我可以将其用于任何类:
trait MyLogger[T] {
def log = Logger.getLogger(T)
}
然后:
class Fizz extends MyLogger[Fizz] {
def doSomething() : Unit = {
log.info("Doing something now...")
}
}
等。这可能吗? 如果是这样,我是在这里关闭还是离开基地?
实际上,您的性格是正确的:
trait Logging {
lazy val log = Logger.getLogger(getClass.getName)
}
您可以这样使用它:
class MyStuff extends MySuperClass with Logging {
log.info("Setting up my stuff")
}
实际上,这几乎是scala日志记录的全部功能-再加上一些宏以节省您键入if (log.is_LEVEL_Enabled) log._LEVEL_
(但仍将其放在最终输出中)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.