【问题标题】:logging jsf exceptions with log4j使用 log4j 记录 jsf 异常
【发布时间】:2018-10-17 14:12:35
【问题描述】:

我正在尝试使用 log4j my log4j.properties 在我的非 maven 项目中记录异常

log4j.rootLogger = debug, stdout, FILE

log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{1}:%L - %m%n

log4j.appender.FILE = org.apache.log4j.RollingFileAppender
log4j.appender.FILE.maxFileSize = 100kb
log4j.appender.FILE.maxBackupIndex = 2
log4j.appender.file.File=C:/Users/dev/Desktop/log.txt
log4j.appender.FILE.Threshold = debug
log4j.appender.FILE.layout = org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern = %d{ABSOLUTE} %5p %c{1}:%L - %m%n

并使用了balusC回答中提到的异常处理程序和工厂

public class ErpExceptionHandler extends ExceptionHandlerWrapper {

    private ExceptionHandler wrapped;
private static final long serialVersionUID = 1L;    

    private static Logger logger = Logger.getLogger(ErpExceptionHandler.class);
    public ErpExceptionHandler(ExceptionHandler wrapped) {
        this.wrapped = wrapped;
    }

    @Override
    public void handle() throws FacesException {
        FacesContext facesContext = FacesContext.getCurrentInstance();

        for (Iterator<ExceptionQueuedEvent> iter = getUnhandledExceptionQueuedEvents().iterator(); iter.hasNext();) {
            Throwable exception = iter.next().getContext().getException(); 

       logger.error("An exception occurred!", exception);
        }

        getWrapped().handle();
    }

    @Override
    public ExceptionHandler getWrapped() {
        return wrapped;
    }

}

而我的日志文件仍然是空的,我在搞什么???

【问题讨论】:

  • 我看不出这与 jsf 有什么关系...需要详细说明吗?

标签: java jsf


【解决方案1】:

您似乎已启用 log4j 配置以在 DEBUG 级别登录。但是,不包括正在记录的实际代码。可能是在登录代码时没有使用 DEBUG 级别(或适当的级别)?


更新: 请试试这个:- log4j.appender.file.File=C:\\Users\\dev\\Desktop\\log.txt (这里使用双反斜杠而不是正斜杠)

另外,请尝试在所有条件/if 条件/等之外抛出一个新异常,以简化并检查日志记录是否有效。然后你必须捕获并记录这个抛出的异常。

【讨论】:

  • 我编辑它以显示我正在记录的位置 我知道缺少一些东西,但我无法确切知道是什么
  • 您使用的是哪个操作系统?或者您是通过 Eclipse 或某个 IDE 运行此代码?
  • 请试试这个:- log4j.appender.file.File=C:\\Users\\dev\\Desktop\\log.txt(这里使用双反斜杠代替正斜杠)
  • 我正在使用 netbeans
  • 我尝试使用 log4j.appender.file.File=C:\\Users\\dev\\Desktop\\log.txt 但没有成功
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-20
  • 1970-01-01
相关资源
最近更新 更多