Подтвердить что ты не робот

Как печатать исключение с помощью журнала?

У меня есть ситуация, когда я хочу напечатать все исключение, пойманное в блоке catch, используя logger.

 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). Тогда есть ли способ, использующий регистратор, который печатает любое исключение, пойманное в блоке catch? Примечание: мы используем java.util.logging.Logger API

Прошу вас уведомить меня... Спасибо в Advance

4b9b3361

Ответ 1

Вероятно, вам следует уточнить, какой регистратор вы используете.

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

Надеюсь, что это поможет.

Ответ 2

Использование: LOGGER.log(Level.INFO, "Got an exception.", e);
или LOGGER.info("Got an exception. " + e.getMessage());

Ответ 3

Этот метод можно использовать для записи стека исключений в 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();
}

Ответ 4

Попробуйте записать трассировку стека, как показано ниже:

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