Я упаковываю приложение rails с помощью warbler, и мне нужно вести журнал для конкретного приложения. Я добавил банку log4j и commons-loggin в каталог WEB-INF / lib, и я хочу добавить log4j.properties в каталог WEB-INF / classes. Проблема в том, что я также хочу вести журнал для конкретной среды, поэтому моя постановка / производство использует другие свойства (например, INFO вместо DEBUG), чем моя разработка. Я не могу просто сделать:

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

Потому что Tomcat, похоже, ищет конкретный файл log4j.properties. Есть ли способ заставить певца переименовать этот файл просто в log4j.properties? Или есть лучший механизм для ведения журнала для конкретного приложения и среды?

2
brad 17 Дек 2009 в 20:41

2 ответа

Лучший ответ

И за окончательный ответ. RAILS_ENV, похоже, не работает в warbler, но просматривает документы в конфигурации warble есть атрибут webxml, содержащий rails.env, изменяющий мой код для извлечения файла, например:

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

Работал как шарм!

3
brad 17 Дек 2009 в 23:05
Рад, что вы смогли сами придумать ответ! Получаете ли вы больше баллов за ответы на свои вопросы?
 – 
Nick Sieger
27 Янв 2010 в 20:43

Думаю, мне стоит просто прочитать дальше в самом файле трелей. Вы можете настроить карты пути для классов java_classes. Вот что я использовал:

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

Единственная проблема, которую я обнаружил, заключается в том, что это больше не помещает log4j.properties в каталог WEB-INF / classes. Теперь он помещает его в корневой каталог. Кажется странным, что в документации конкретно сказано:

Одна или несколько карт пути, определяющих, как классы 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"

Используя файлы log4j.properties. # {RAILS_ENV} в каталоге lib / properties

0
brad 17 Дек 2009 в 21:35
Сотрите это. Похоже, что Warbler не получает должным образом rails_env, я использую warbler (0.9.14). В моем развертывании шапки я установил rails_env соответствующим образом, не уверен, что здесь происходит, но всегда получает log4j.properties.development
 – 
brad
17 Дек 2009 в 21:47