Log4j没有抓住javax.el异常

时间:2017-04-27 17:42:17

标签: log4j

我收到Caused by: javax.el.PropertyNotFoundException,但这不会显示在我的文件log4j中,只是在server.log(Jboss EAP 7)中。我已经配置了log4j,但没有工作:

log4j.rootLogger=INFO, logfile

log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.File=\${user.home}/myproject/log/app.log
log4j.appender.logfile.DatePattern='_'yyyy-MM-dd'.log'
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%-5p %d{dd/MM/yyyy HH:mm:ss} [%c:%L] - %m%n

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

1 个答案:

答案 0 :(得分:0)

此异常未出现在log4j生成的日志中的事实更可能是代码问题,而不是配置问题。

如果你没有以某种方式捕获异常并将其传递给记录器,那么它将不会显示在log4j生成的日志中,而是写入System.out(在服务器环境中通常意味着服务器日志) )。

由于这是RuntimeException的子类,因此它不是一个经过检查的异常(请参阅the javadoc of RuntimeExceptionPropertyNotFoundException)这就是为什么我猜你没有把它包围在试试中-catch block。

您需要执行以下操作:

try{

    //Code that might throw the PropertyNotFoundException goes here

}catch(PropertyNotFoundException e){

    logger.error("Some kind of error message here!", e);

    //Do something to handle the exception...

}