2011-05-02 65 views
4

如何獲得在JRuby中工作的以下Java代碼(初始化SLF4J記錄器)的等效內容?JRuby - 使用SLF4J

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

比方說,我的(工作)示例腳本是這樣的:

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

因爲我是JRuby的新手,我只得到了它的方法內的工作,而不是用在一個.classgetLogger

所以問題是:

  • 如何使用.class在JRuby的代碼參數調用getLogger
  • 如何將Logger對象放置在某個地方作爲靜態對象?每次我打電話給該方法時,我都想避免getLogger

謝謝你的幫忙!

+0

有人嗎?不應該很難理解我的問題,並告訴我是否可能,以及如何去做。謝謝! – AndrewBourgeois 2011-05-03 10:48:10

回答

2

您需要使用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