Я просто потратил большую часть 3 часов, пытаясь получить логирование моего приложения Rails с помощью Log4j. Наконец-то он заработал, но я не уверен, что то, что я сделал, правильно. Я безуспешно пробовал разные методы до самой последней попытки. Так что я действительно ищу здесь подтверждения, возможно, несколько указателей и советов - если честно, все будет полезно. Ниже я суммировал все свои слабые методы в три попытки. Я надеюсь на некоторое понимание того, где я ошибался с каждой попыткой - даже если это означает, что меня разорвет.
Заранее благодарим за помощь!
Я в основном следовал руководству на веб-сайте Apache Tomcat здесь . Шаги:
log4j.properties
в $ CATALINA_HOME / lib
log4j-xyzjar
в $ CATALINA_HOME / lib
$ CATALINA_HOME / bin / tomcat-juli.jar
на tomcat-juli.
jakarta_service_20101231.log
stderr_20101231.log
stdout_20101231.log
tomcat.log
? Изменен $ CATALINA_BASE / conf / logging.properties
, выполнив следующие действия:
обработчиков
: 5rails3.org.apache.juli.FileHandler
Добавление особых свойств обработчика
5rails3.org.apache.juli.FileHandler.level = FINE
5rails3.org.apache.juli.FileHandler.directory = $ {catalina.base} / журналы
5rails3.org.apache.juli.FileHandler.prefix = rails3.
Добавление свойств объекта
org.apache.catalina.core.ContainerBase. [Catalina]. [Localhost]. [/ Rails3] .level = INFO
org.apache.catalina.core.ContainerBase. [Каталина]. [localhost]. [/ rails3] .handlers = 4host-manager.org.apache.juli.FileHandler
Изменил мой web.xml
, добавив следующий параметр контекста в соответствии с разделом Logging файла README jruby-rack (я также соответствующим образом изменил свой warbler.rb, но решил изменить web.xml
, чтобы быстрее тестировать).
jruby.rack.logging commons_logging
Перезапуск Tomcat
rails3.log
), однако в нем не было информации журнала. Я решил дать Log4j еще один круговорот с этой новой настройкой web.xml
.
log4j.jar
в свой WEB-INF / lib
папка Создает файл log4j.properties
и помещает его в WEB-INF / classes
log4j.rootLogger = INFO, R
log4j.logger.javax.servlet = ОТЛАДКА
log4j.appender.R = org.apache.log4j.RollingFileAppender
log4j.appender.R.File = $ {catalina.base} /logs/rails3.log
log4j.appender.R.MaxFileSize = 5036 КБ
log4j.appender.R.MaxBackupIndex = 4
log4j.appender.R.layout = org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern =% d {dd MMM yyyy HH: mm: ss} [% t]% -5p% c% x -% m% n
Перезапуск Tomcat
То же, что и попытка 2
ПРИМЕЧАНИЕ: Я использовал log4j.logger.javax.servlet = DEBUG
, потому что я прочитал в файле README jruby-rack что весь вывод журнала автоматически перенаправляется в метод javax.servlet.ServletContext # log
. Я думал, что это зафиксирует это, но я был явно неправ.
commons_logging
? Немного неуверенно, почему попытка 2A не сработала, подумал я про себя, может быть, я не могу использовать commons_logging
для jruby.rack .logging
, потому что он, вероятно, не использует API commons_logging
... (но я все еще не был уверен). Я видел slf4j
как вариант. Я никогда об этом не слышал и из любопытства решил поискать. Прочитав вкратце об этом, я подумал, что это так же хорошо, как и любой другой, и решил попробовать, следуя инструкциям здесь .
Продолжая настройку попытки 2A:
slf4j-api-1.6.1.jar
и slf4j-simple-1.6.1.jar
в мою папку WEB-INF / lib
slf4j-log4j12-1.6.1.jar
в мою папку WEB-INF / lib
И VIOLA ! Теперь у меня есть информация о журналах, хранящаяся в моем файле rails3.log .
Итак, большой вопрос:
Хотя ведение журнала, похоже, сейчас работает, я действительно не уверен, правильно ли то, что я сделал. Итак, как я сказал ранее, я действительно ищу более или менее какое-то подтверждение. Я также был бы признателен за любые указатели / подсказки / советы, если они у вас есть. Спасибо!