Я ищу замену
private static final Logger log = Logger.getLogger(MyClass.class);
с чем-то, что немного менее многословно и более идиоматично, чем
class MyClass {
companion object {
val log = LoggerFactory.getLogger(MyClass::class.java)
}
fun usage() {
log.debug("Success")
}
}
Бонусные баллы за то, что не нужно делать это в каждом классе.
Я попытался:
interface HasLogger {
val log: Logger
get() = LoggerFactory.getLogger(this.javaClass)
}
Но это приводит к вызову getLogger() для каждого использования (недопустимо), а также возвращает регистратор для подтипа (не того, где он был объявлен).