[英]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.