如何使用记录器打印异常?

2022-09-01 15:25:52

我有一个情况,我想使用记录器打印捕获块中的所有异常。

 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 block中做了这么多事情,并且我只保留一个捕获块作为catch(异常e),那么有没有办法使用记录器来打印捕获在catch块中捕获的任何类型的异常?注意:我们使用的是 java.util.logging.Logger API


答案 1

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

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

所以,也许你需要写:

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

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

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

希望它有帮助。


答案 2

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