如何为从JRuby调用的Java jar设置log4j日志记录级别

时间:2014-04-24 19:41:39

标签: log4j jruby catalina

我有一个需要Java jar的JRuby项目。 Java jar用于使用log4j进行日志记录。我不需要在我的JRuby代码中使用log4j,但我想运行JRuby代码,以便在调用已检测的Java类时,它们会遵循我指定的log4j设置。

我正在使用特立尼达,并希望只是传入'正常'的log4j JVM参数就可以了。这是我刚运行特立尼达时的过程信息:

/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/bin/java -Xmx500m -Xss2048k  -Djffi.boot.library.path=/Users/eebbesen/.rvm/rubies/jruby-1.7.5/lib/jni -Dfile.encoding=UTF-8 -Djava.net.preferIPv4Stack=true -Xbootclasspath/a:/Users/eebbesen/.rvm/rubies/jruby-1.7.5/lib/jruby.jar -classpath : -Djruby.home=/Users/eebbesen/.rvm/rubies/jruby-1.7.5 -Djruby.lib=/Users/eebbesen/.rvm/rubies/jruby-1.7.5/lib -Djruby.script=jruby -Djruby.shell=/bin/sh org.jruby.Main script/trinidad

这就是我试图让log4j工作的原因:

/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/bin/java -Xmx500m -Xss2048k -Djffi.boot.library.path=/Users/eebbesen/.rvm/rubies/jruby-1.7.5/lib/jni -Dfile.encoding=UTF-8 -Djava.net.preferIPv4Stack=true -Xbootclasspath/a:/Users/eebbesen/.rvm/rubies/jruby-1.7.5/lib/jruby.jar -classpath : -Djruby.home=/Users/eebbesen/.rvm/rubies/jruby-1.7.5 -Djruby.lib=/Users/eebbesen/.rvm/rubies/jruby-1.7.5/lib -Djruby.script=jruby -Dlog4j.debug=true -Dlog4j.configuration=file:log4j.properties -Djruby.shell=/bin/sh org.jruby.Main script/trinidad

所以我只是添加

-Dlog4j.debug=true -Dlog4j.configuration=file:log4j.properties

特立尼达已经在做什么。

当我运行Trinidad时,我没有看到任何log4j日志记录发生。但是,当我使用Rails控制台时,我的日志记录语句出现了。

我见过的帖子介绍了如何在JRuby中使用log4j,但如果可能,我想通过JVM参数来实现这一点。

1 个答案:

答案 0 :(得分:2)

我通过设置JVM选项JRuby-style来实现这一点:

export JRUBY_OPTS="-J-Dlog4j.debug=true -J-Dlog4j.configuration=file:/absolute/path/to/log4j.properties"
trinidad

这覆盖了我的Java jar中指定的log4j.properties,我能够在jar文件中操作Java类的日志级别(并由类显式调用)。