log4j プロパティまたは 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>
また
エラーページを使いたい場合は、
<error-page>
<exception-type>javax.el.ELException</exception-type>
<location>/elError.xhtml</location>
</error-page>
elError.xhtml は、
<h:panelGrid>
<h:outputText value="Exception Occured:" />
<h:outputText value="#{ErrorBean.message}" />
</h:panelGrid>
エラーを取得し、データベースまたは log4j にログを記録する ManagedBean を作成します。
@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();
}
}