Flo*_*ian 12 jsf logging tomcat richfaces jsf-2
我在tomcat6(6.0.28)上有一个使用JSF2(2.1.2),Richfaces4(4.0.0.Final)的项目.为了管理我的EAR的Tomcat和WebSphere7之间的可移植性,我在tomcat lib中有以下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来调用这个方法,并添加了'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!
Run Code Online (Sandbox Code Playgroud)
我还在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>
Run Code Online (Sandbox Code Playgroud)
但是在显示JSF页面时我没有在控制台中看到任何日志...我还尝试使用过滤器在执行JSF Servlet之前调用SLF4JBridgeHandler.install(),但是我只从中获取了很多OK日志我的过滤器......
2)我试着在这里完全遵循教程(它在tomcat日志文件夹中为JSF2的每个记录器创建新文件).我尝试通过更改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
Run Code Online (Sandbox Code Playgroud)
还没有运气......
4)我试着通过tomcat而不是juli使用log4j来遵循这个文档.它似乎运行良好,但更改生成的log4j.properties将JSF记录器放入DEBUG不起作用...
任何的想法 ?
问候,
弗洛里安
Bal*_*usC 30
两个事实:
java.util.logging
API,该API由logging.properties
运行时类路径的根目录中的文件配置.logging.properties
使用当前(!)运行的运行时环境(JRE)的文件.如果您从像Eclipse这样的IDE内部运行Tomcat,则logging.properties
不会使用Tomcat自己的Tomcat .在一个JDK/JRE/lib
将被使用,其中"JDK"是JDK安装文件夹,例如jdk1.6.0_23
.如果您想明确指定logging.properties
文件的位置,则需要设置VM参数:
-Djava.util.logging.config.file=/path/to/tomcat/logging.properties
Run Code Online (Sandbox Code Playgroud)
无论使用何种日志文件,为了启用Mojarra日志记录,您需要打开有logging.properties
问题的模板文件,滚动到底部并编辑底部附近的以下行
java.util.logging.ConsoleHandler.level = INFO
Run Code Online (Sandbox Code Playgroud)
成
java.util.logging.ConsoleHandler.level = ALL
Run Code Online (Sandbox Code Playgroud)
以便将全局控制台级别设置为ALL
而不是INFO
.否则INFO
,根本不会记录较低级别的级别.
最后将以下两行添加到文件的最底部
javax.faces.level = ALL
com.sun.faces.level = ALL
javax.enterprise.resource.webcontainer.jsf.level = ALL
Run Code Online (Sandbox Code Playgroud)
第一个打开所有JSF API日志记录,第二个打开所有JSF impl(Mojarra)日志记录,第三个打开所有JSF Java EE日志记录.
归档时间: |
|
查看次数: |
15381 次 |
最近记录: |