Warbler config.java_classes和log4j.properties

时间:2009-12-17 17:41:27

标签: log4j jruby warbler

我正在用warbler打包一个rails应用程序,我想要特定于应用程序的日志记录。我已经将log4j和commons-loggin jar添加到WEB-INF / lib目录中,我想将log4j.properties添加到WEB-INF / classes目录中。问题是,我也想要特定于环境的日志记录,所以我的staging / production使用不同的属性(即INFO而不是DEBUG)而不是我的开发。我不能只做一个:

config.java_classes = FileList["lib/log4j-#{RAILS_ENV}.properties"]

因为Tomcat似乎在寻找特定文件log4j.properties。有没有办法让warbler将此文件重命名为log4j.properties?或者是否有更好的特定于应用程序的特定环境日志记录机制?

2 个答案:

答案 0 :(得分:3)

最后的答案。 RAILS_ENV似乎不起作用,但在warble配置中查看docs,有一个包含rails.env的webxml属性,修改我的代码以拉取文件:

config.java_classes = FileList["lib/properties/log4j.properties.#{config.webxml.rails.env}"]

像魅力一样工作!

答案 1 :(得分:0)

猜猜我应该在warble文件中进一步阅读。您可以为java_classes配置路径映射。这是我使用的:

config.java_classes = FileList["lib/properties/log4j.properties.#{RAILS_ENV}"]
config.pathmaps.java_classes << "%n"

我发现的唯一问题是,这实际上并没有将log4j.properties放在WEB-INF / classes目录中。它现在把它放在Root中。在文档中明确指出它似乎很奇怪:

  

定义如何将java类复制到WEB-INF / classes

中的一个或多个路径图

我不认为我必须手动添加WEB-INF / classes路径,但我做到了。所以最后,这有效:

config.java_classes = FileList["lib/properties/log4j.properties.#{RAILS_ENV}"]
config.pathmaps.java_classes << "WEB-INF/classes/%n"

使用lib / properties目录中的文件log4j.properties。#{RAILS_ENV}