0

我想知道是否有一种方法可以使用 log4j 在日志文件中的 jsf-facelet(xhtml) 页面上记录 EL(Expression Language) 错误?我尝试了以下记录器但徒劳无功..

 <logger name="javax.faces">
    <level value="WARN" />
    <appender-ref ref="appLogFile"/>
 </logger>
 <logger name="javax.servlet">
    <level value="WARN" />
    <appender-ref ref="appLogFile"/>
 </logger>
 <logger name="org.apache">
    <level value="WARN" />
    <appender-ref ref="appLogFile"/>
 </logger>

实际上,我在 JSF EL#{intA/intB} #{intA-intB-intC}等中有一些简单的数学计算,并且想在客户浏览我们的 Web 应用程序时记录是否发生错误。

任何提示表示赞赏:-)

4

1 回答 1

0

You can add it to your log4j properties or XML ,

# log4j.properties

log4j.rootLogger=DEBUG,myapp

log4j.appender.myapp=org.apache.log4j.RollingFileAppender
log4j.appender.myapp.file=/var/log/appLogFile.log
log4j.appender.myapp.maxFileSize=10MB
log4j.appender.myapp.maxBackupIndex=10
log4j.appender.myapp.layout=org.apache.log4j.PatternLayout
log4j.appender.myapp.layout.ConversionPattern=%5p | %d | %F:%L | %m%n

log4j.logger.javax.faces=DEBUG
log4j.logger.javax.el=ERROR
log4j.logger.com.sun.faces=DEBUG

 <logger name="javax.faces">
    <level value="WARN" />
    <appender-ref ref="appLogFile"/>
 </logger>

  <logger name="javax.el">
    <level value="ERROR" />
    <appender-ref ref="appLogFile"/>
 </logger>

or

If you want to use an error page,

 <error-page>
        <exception-type>javax.el.ELException</exception-type>
        <location>/elError.xhtml</location>
    </error-page>

elError.xhtml can be somethhing like ,

<h:panelGrid>
    <h:outputText value="Exception Occured:" />
        <h:outputText  value="#{ErrorBean.message}" />  
</h:panelGrid>

Create a ManagedBean to get the error and do logging to database or log4j ,

@ManagedBean
        public class ErrorBean{

            public String getMessage() {

                FacesContext context = FacesContext.getCurrentInstance();
                Map requestMap = context.getExternalContext().getRequestMap();
                Throwable exception = (Throwable) 
                               requestMap.get("javax.servlet.error.exception");

                // Log the error in database or log4j

                return ex.getMessage();
            }
        }
于 2013-03-07T18:26:32.910 回答