JRuby — Использование SLF4J

Как мне получить эквивалент следующего кода 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 каждый раз, когда я вызываю метод.

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


person AndrewBourgeois    schedule 02.05.2011    source источник
comment
Любой? Не должно быть так сложно понять мой вопрос и сказать мне, возможно ли это или нет, и как это сделать. Спасибо!   -  person AndrewBourgeois    schedule 03.05.2011


Ответы (1)


вам нужно будет использовать 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
person kares    schedule 23.03.2012