JSF2使用tomcat记录日志



我有一个项目使用JSF2 (2.1.2), Richfaces4 (4.0.0.Final)在tomcat6(6.0.28)。为了管理我的ear在Tomcat和WebSphere7之间的可移植性,我在Tomcat库中有以下jar: el-api-2.2.jar, jsf-api-2.1.2.jar, jsf-impl-2.1.2.jar, validate -api-1.0.0. ga .jar。

我的问题是,我从来没有设法改变JSF或Richfaces的日志级别,除了从初始化的,我没有看到任何在我的控制台中。即使我在服务器响应中得到异常!

我尝试了几种方法:

1)在我的应用程序中,我使用slf4j和log4j。因此,自然的方法是使用SLF4JBridgeHandler.install()。我做了一个小servlet在它的init()方法中调用这个方法,并添加了一个'load-on-startup',以确保它在JSF servlet之前被加载(我不确定tomcat是否关心这个load-on-startup指令,因为我仍然从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页面时,我在控制台中没有看到任何日志…我还尝试在执行JSF Servlet之前使用过滤器调用SLF4JBridgeHandler.install(),但我只从过滤器中获得了大量OK日志…

2)我尝试在这里完全遵循教程(它为JSF2的每个记录器在tomcat log文件夹中创建新文件)。我尝试通过更改日志记录。配置tomcat的conf文件夹中的属性,并添加新的日志记录。在我的应用程序的src/resources/文件夹中的属性。但是没有运气……

3)我尝试将JSF记录器添加到日志记录中。在tomcat中添加以下属性:

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

No luck yet…

4)我尝试在tomcat中使用log4j,而不是按照本文档使用juli。它似乎工作得很好,但改变了结果log4j。将JSF日志记录器置于DEBUG的属性不起作用…

你知道吗?

问候,

Florian

两个事实:

  • JSF使用java.util.logging API,该API由运行时类路径根目录下的logging.properties文件配置。
  • 将使用当前(!)运行环境的logging.properties文件

如果在Eclipse这样的IDE中运行Tomcat,那么Tomcat自己的logging.properties将不会被使用。JDK/JRE/lib中的"JDK"是JDK安装文件夹,如jdk1.6.0_23。如果您想显式指定logging.properties文件的位置,那么您需要设置VM参数:

-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

使全局控制台级别设置为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日志记录。

相关内容

  • 没有找到相关文章

最新更新