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 .