Migration von Groovy nach Scala hier. Bisher habe ich wie Scala wirklich, aber ich sofort fehle meine @Slf4j
Anmerkung, wo ich konnte einfach haben:Scala-Entsprechung für Groovy @ Slf4j Annotation
@Slf4j
class Fizz {
void doSomething() {
log.info("We're doing something now...")
}
}
... und Groovy würde eine SLF4J Logger erstellen und injizieren sie in Fizz
‚s-Bytecode für mich. Es erspart mir aus mit der folgenden in jede einzelne Klasse zu tun:
class Fizz {
Logger log = LoggerFactory.getLogger(Fizz)
void doSomething() {
log.info("We're doing something now...")
}
}
ich wirklich verpassen Sie diese so weit.
Ich frage mich, ob ich Züge/Mixins verwenden können, das Gleiche zu tun, aber es wäre generisch sein, so konnte ich es mit jede Klasse verwenden:
trait MyLogger[T] {
def log = Logger.getLogger(T)
}
Dann:
class Fizz extends MyLogger[Fizz] {
def doSomething() : Unit = {
log.info("Doing something now...")
}
}
usw. Ist das möglich? Wenn ja, bin ich hier nahe oder weit weg von der Basis?
Es könnte von [Makro Annotation] (http://docs.scala-lang.org/overviews/macros/annotations.html) implementiert werden – jilen
Alternative 'lazy val log = LoggerFactory.getLogger (getClass.getName)' würde erspart Ihnen die Notwendigkeit, einen Typparameter zu übergeben. –