«1. Обзор
В этом кратком руководстве мы покажем, как регистрировать исключения в Java с помощью SLF4J API. Мы будем использовать 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.