编程语言
首页 > 编程语言> > java – JRuby – 使用SLF4J

java – JRuby – 使用SLF4J

作者:互联网

如何在JRuby中获得以下Java代码(初始化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新手,所以我只在方法内部工作,而不是在getLogger中使用.class.

所以问题是:

>如何使用.class作为JRuby代码中的参数调用getLogger?
>如何将Logger对象作为静态放在某处?我想每次调用方法时都避免使用getLogger.

谢谢您的帮助!

解决方法:

你需要使用java_class来获取(包装的)java.lang.Class的“正确”类,而不是像java.util.Date.class那样获取ruby类,例如:

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

至于“静态”存储它你可以使用类变量,但请记住它们是在继承层次结构中共享的,例如:

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

标签:java,slf4j,jruby
来源: https://codeday.me/bug/20190704/1381228.html