Как получить регистратор для моего собственного имени класса с помощью Play2/scala?

В Play 2 я использовал этот код для получения регистратора:

public class LoggerHelper {
    public static Logger getLogger() {
        final Throwable t = new Throwable();
        t.fillInStackTrace();
        final String fullClassName = t.getStackTrace()[1].getClassName();
        return Logger.getLogger(fullClassName);
    }
}

public class MyController {
    private final static Logger logger = LoggerHelper.getLogger();
}

В Play 2 образец кода, который я нашел, выглядел примерно так:

class MyController {
  private val log = Logger(classOf[MyController])
  ...
}

Как я могу сгенерировать его, чтобы не включать имя класса?


person ripper234    schedule 27.02.2013    source источник


Ответы (1)


Возможно, я неправильно понял ваш вопрос, но, похоже, все, что вам нужно, это

class MyController {
  private val log = Logger(this.getClass)
  ...
}

или я неправильно понял ваши потребности?

person William Billingsley    schedule 27.02.2013
comment
Может, да. Я новичок в scala, не знал, что это так просто - в Java вышеперечисленное не работает, потому что контроллеры используют статические методы, у которых нет this. Кстати, я также видел, как кто-то просто делал play.api.Logger.info("...") в Play - что рекомендуется, это или то, что вы предложили? - person ripper234; 27.02.2013