关于java:如何使用logger打印异常?

how to print an exception using logger?

在这种情况下,我希望使用logger打印catch块中捕获的所有异常。

1
2
3
4
5
6
7
8
9
10
 try {
        File file = new File("C:\\className").mkdir();
        fh = new FileHandler("C:\\className\\className.log");
        logger.addHandler(fh);
        logger.setUseParentHandlers(false);
        SimpleFormatter formatter = new SimpleFormatter();
        fh.setFormatter(formatter);
    } catch (Exception e) {
        logger.info(e);
    }

我知道错误记录器不能应用于java.io.Exception...

我担心的是,如果我在try块中做了这么多事情,并且只保留一个catch块作为catch(异常E),那么有没有任何方法可以使用记录器来打印catch块中捕获的任何异常?注意:我们使用的是java.util.logging.logger API


您可能应该澄清您使用的是哪个记录器。

org.apache.commons.logging.Log接口有方法void error(Object message, Throwable t)和方法void info(Object message, Throwable t)记录堆栈跟踪和自定义消息。log4j实现也有这个方法。

所以,你可能需要写:

1
logger.error("BOOM!", e);

如果您需要使用信息级别来记录它(尽管,这可能是一个奇怪的用例),那么:

1
logger.info("Just a stack trace, nothing to worry about", e);

希望有帮助。


使用:LOGGER.log(Level.INFO,"Got an exception.", e);
LOGGER.info("Got an exception." + e.getMessage())


尝试如下记录堆栈跟踪:

1
logger.error("Exception ::" , e);


可以使用此方法将异常堆栈记录为字符串

1
2
3
4
5
6
7
8
9
 public String stackTraceToString(Throwable e) {
    StringBuilder sb = new StringBuilder();
    for (StackTraceElement element : e.getStackTrace()) {
        sb.append(element.toString());
        sb.append("
"
);
    }
    return sb.toString();
}