Log4j don';t捕获javax.el异常

Log4j don';t捕获javax.el异常,log4j,Log4j,我得到了一个由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}

我得到了一个由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

这个异常没有出现在log4j生成的日志中,这更可能是代码问题,而不是配置问题

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

由于这是
RuntimeException
的一个子类,所以它不是一个选中的异常(请参见和),这就是为什么我猜它没有被try-catch块包围的原因

您需要执行以下操作:

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...

}