如何使用logger打印exception?

我有一种情况,我想使用记录器打印catch块中捕获的所有exception。

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(Exception e),那么有没有办法使用logger来打印catch块中捕获的任何exception? 注意:我们使用的是java.util.logging.Logger API

您应该澄清您使用的记录器。

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

所以,可能你需要写:

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

如果您需要使用INFO级别进行日志记录(但是,这可能是一个奇怪的用例),那么:

 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()) ;

您可以使用此方法将exception堆栈记录到String

  public String stackTraceToString(Throwable e) { StringBuilder sb = new StringBuilder(); for (StackTraceElement element : e.getStackTrace()) { sb.append(element.toString()); sb.append("\n"); } return sb.toString(); } 

尝试记录堆栈跟踪,如下所示:

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