我有一个项目在tomcat6(6.0.28)上使用JSF2(2.1.2),Richfaces4(4.0.0.Final)。为了为我的EAR管理Tomcat和WebSphere7之间的可移植性,我的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()方法期间制作了一个小的Servlet来调用此方法,并添加了“启动时加载”以确保在JSF Servlet之前加载了它(我不确定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页面时,我的控制台中没有看到任何日志…我也尝试使用过滤器在执行JSF Servlet之前调用SLF4JBridgeHandler.install(),但是从中我只能得到很多OK日志我的过滤器…
2)我试图完全按照这里的教程进行操作(它为每个JSF2记录器在tomcat日志文件夹中创建了新文件)。我尝试通过更改tomcat的conf文件夹内的logging.properties并在应用程序的src / resources /文件夹内添加新的logging.properties来进行尝试。但是没有运气…
3)我尝试通过添加以下命令将JSF记录器添加到tomcat内部的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)我通过遵循此文档,尝试在tomcat内使用log4j代替juli 。它似乎工作良好,但是更改生成的log4j.properties使其无法将JSF记录器置于DEBUG中…
任何的想法 ?
问候,
弗洛里安
两个事实:
java.util.logging
logging.properties
如果您是从Eclipse之类的IDE内运行Tomcat,则logging.properties不会使用Tomcat自己的。JDK/JRE/lib将使用in中的一个,其中“ JDK”是JDK安装文件夹,例如jdk1.6.0_23。如果要显式指定logging.properties文件的位置,则需要设置VM参数:
JDK/JRE/lib
jdk1.6.0_23
-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,将不会记录比所有更低的级别。
ALL
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日志记录。