Журналы JSF2 с котом - PullRequest
       17

Журналы JSF2 с котом

12 голосов
/ 09 сентября 2011

У меня есть проект, использующий JSF2 (2.1.2), Richfaces4 (4.0.0.Final) на tomcat6 (6.0.28).Для того чтобы управлять переносимостью между Tomcat и WebSphere7 для моих EAR, в моей библиотеке Tomcat есть следующие jar-файлы: el-api-2.2.jar, jsf-api-2.1.2.jar, jsf-impl-2.1.2.jar, validation-api-1.0.0.GA.jar.

Моя проблема заключается в том, что мне никогда не удавалось изменить уровни журнала JSF или Richfaces, и кроме уровней инициализации, я не вижу внутри себяприставка.Даже когда я получаю исключения в ответе моего сервера!

Я пробовал несколько способов:

1) В своих приложениях я использую slf4j и log4j.Поэтому естественным способом было бы использовать SLF4JBridgeHandler.install ().Я сделал небольшой сервлет для вызова этого метода во время его метода init () и добавил «загрузку при запуске», чтобы убедиться, что он загружается до сервлета JSF (я не уверен, что tomcat вообще заботится об этой загрузке при запускедиректива, потому что я до сих пор получаю журналы от JSF init), например:

INFO: JSF1027 : [null] Les objets ELResolvers de JSF n’ont pas été enregistrés avec le conteneur JSP.
09-09-2011 16:50:58:591 [Thread-2] 937  DEBUG com.jsf.test.SLF4JBridgeHandlerInstallerServlet - SLF4JBridgeHandler.install() OK!

Я также добавил некоторую конфигурацию в свой log4j.xml:

<logger name="javax.faces"><level value="debug"/></logger>  
<logger name="com.sun.faces"><level value="debug"/></logger>
<logger name="javax.enterprise.resource.webcontainer.jsf"><level value="debug"/></logger>

Но я не вижу никакихрегистрируется в моей консоли при отображении страницы JSF ... Я также пытался использовать фильтр для вызова SLF4JBridgeHandler.install () перед выполнением сервлета JSF, но я получаю только много журналов OK из своего фильтра ...

2) Я пытался точно следовать учебнику здесь (он создает новые файлы в папке журнала tomcat для каждого регистратора JSF2).Я попытался изменить logging.properties внутри папки conf в tomcat и добавить новый logging.properties в папку src / resources / в моем приложении.Но не повезло ...

3) Я пытался добавить регистраторы JSF в свойства logging.properties внутри моего кота, добавив следующее:

javax.enterprise.resource.webcontainer.jsf.managedbean.level=FINEST
javax.enterprise.resource.webcontainer.jsf.managedbean.handlers = java.util.logging.ConsoleHandler
javax.enterprise.resource.webcontainer.jsf.config.level=FINEST
javax.enterprise.resource.webcontainer.jsf.config.handlers = java.util.logging.ConsoleHandler
javax.enterprise.resource.webcontainer.jsf.facelets.level=FINEST
javax.enterprise.resource.webcontainer.jsf.facelets.handlers = java.util.logging.ConsoleHandler
javax.enterprise.resource.webcontainer.jsf.resource.level=FINEST
javax.enterprise.resource.webcontainer.jsf.resource.handlers = java.util.logging.ConsoleHandler
javax.enterprise.resource.webcontainer.jsf.lifecycle.level=FINEST
javax.enterprise.resource.webcontainer.jsf.lifecycle.handlers = java.util.logging.ConsoleHandler

Пока не повезло ...

4) Я попытался использовать log4j внутри tomcat вместо juli, следуя этой документации .Кажется, это работает хорошо, но изменение результирующих log4j.properties для помещения регистраторов JSF в DEBUG не сработало ...

Есть идеи?

С уважением,

Florian

1 Ответ

30 голосов
/ 09 сентября 2011

Два факта:

  • JSF использует API java.util.logging, который должен быть настроен с помощью файла logging.properties в корне пути к классу времени выполнения.
  • Будет использован файл logging.properties текущей (!) Рабочей среды выполнения (JRE).

Если вы запускаете Tomcat из IDE, такой как Eclipse, то собственный logging.properties Tomcat не будет использоваться. Будет использоваться тот, что в JDK/JRE/lib, где «JDK» - это папка установки JDK, например jdk1.6.0_23. Если вы хотите явно указать местоположение файла logging.properties, то вам необходимо установить аргумент виртуальной машины:

-Djava.util.logging.config.file=/path/to/tomcat/logging.properties 

Независимо от используемого файла журнала, чтобы включить ведение журнала Mojarra, вам необходимо открыть соответствующий файл шаблона logging.properties, прокрутить до конца и отредактировать следующую строку возле дна

java.util.logging.ConsoleHandler.level = INFO

в

java.util.logging.ConsoleHandler.level = ALL

так, чтобы global уровень консоли был установлен на ALL вместо INFO. В противном случае более низкие уровни, чем INFO, просто не будут регистрироваться вообще.

Наконец добавьте следующие две строки в самый конец файла

javax.faces.level = ALL
com.sun.faces.level = ALL
javax.enterprise.resource.webcontainer.jsf.level = ALL

Первый включает все журналы JSF API, второй включает все журналы JSF impl (Mojarra), а третий включает все журналы JSF Java EE.

...