Перейти к основному содержимому

Регистрация исключений с помощью SLF4J

· 2 мин. чтения

1. Обзор

В этом кратком руководстве мы покажем, как регистрировать исключения в Java с помощью API SLF4J . Мы будем использовать slf4j-simple API в качестве реализации ведения журнала.

Вы можете изучить различные методы логирования в одной из наших предыдущих статей .

2. Зависимости Maven

Во-первых, нам нужно добавить следующие зависимости в наш pom.xml :

<dependency>                             
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.30</version>
</dependency>

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.30</version>
</dependency>

Последние версии этих библиотек можно найти на Maven Central .

3. Примеры

Обычно все исключения регистрируются с помощью метода error() , доступного в классе Logger . Существует довольно много вариаций этого метода. Мы собираемся исследовать:

void error(String msg);
void error(String format, Object... arguments);
void error(String msg, Throwable t);

Давайте сначала инициализируем Logger , который мы собираемся использовать:

Logger logger = LoggerFactory.getLogger(NameOfTheClass.class);

Если нам просто нужно показать сообщение об ошибке, мы можем просто добавить:

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

Вывод приведенного выше кода будет:

ERROR packageName.NameOfTheClass - An exception occurred!

Это достаточно просто. Но чтобы добавить более важную информацию об исключении (включая трассировку стека), мы можем написать:

logger.error("An exception occurred!", new Exception("Custom exception"));

Вывод будет:

ERROR packageName.NameOfTheClass - An exception occurred!
java.lang.Exception: Custom exception
at packageName.NameOfTheClass.methodName(NameOfTheClass.java:lineNo)

При наличии нескольких параметров, если последний аргумент в операторе ведения журнала является исключением, тогда SLF4J предположит, что пользователь хочет, чтобы последний аргумент рассматривался как исключение, а не как простой параметр:

logger.error("{}, {}! An exception occurred!", 
"Hello",
"World",
new Exception("Custom exception"));

В приведенном выше фрагменте сообщение String будет отформатировано на основе переданных сведений об объекте. Мы использовали фигурные скобки в качестве заполнителей для строковых параметров, передаваемых методу.

В этом случае на выходе будет:

ERROR packageName.NameOfTheClass - Hello, World! An exception occurred!
java.lang.Exception: Custom exception
at packageName.NameOfTheClass.methodName(NameOfTheClass.java:lineNo)

4. Вывод

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

Фрагменты кода доступны в репозитории GitHub .