JRuby - Использование SLF4J - PullRequest
4 голосов
/ 02 мая 2011

Как получить эквивалент следующего кода Java (инициализирующего регистратор SLF4J), работающего в JRuby?

private final static Logger logger = LoggerFactory.getLogger(Manager.class);

Допустим, мой (рабочий) пример сценария выглядит следующим образом:

def test(some_input)
     logger = org.slf4j.LoggerFactory.getLogger("SCRIPT");
     logger.error("Error...")
end

Поскольку я новичок на JRuby, он работает только внутри метода, а не с .class в getLogger.

Итак, вопросы:

  • Как мне вызвать getLogger, используя .class в качестве аргумента в коде JRuby?
  • Как мне поместить объект Logger где-нибудь в качестве статического?Я хотел бы избегать getLogger каждый раз, когда я вызываю метод.

Спасибо за вашу помощь!

1 Ответ

2 голосов
/ 23 марта 2012

вам нужно будет использовать java_class, чтобы получить "правильный" класс, который является (обернутым) java.lang.Class, а не рубиновым классом, как с java.util.Date.class например:

Java::OrgSlf4j::LoggerFactory.getLogger java.util.Date.java_class

что касается хранения «статически», вы можете использовать переменные класса, но имейте в виду, что они совместно используются в иерархии наследования, например:

@@logger = Java::OrgSlf4j::LoggerFactory.getLogger java.util.Date.java_class
...