使用SLF4J记录异常

2025/04/09

1. 概述

在本快速教程中,我们将展示如何使用SLF4JAPI记录Java中的异常,我们将使用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. 示例

通常,所有异常都使用Logger类中的error()方法记录,此方法有很多变体,我们来看一下:

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

在存在多个参数的情况下,如果日志记录语句中的最后一个参数是异常,那么SLF4J将假定用户希望将最后一个参数视为异常而不是简单参数:

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

在上面的代码片段中,字符串消息将根据传递的对象详细信息进行格式化,我们使用花括号作为传递给方法的字符串参数的占位符。

在这种情况下,输出将是:

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

4. 总结

在本快速教程中,我们介绍了如何使用SLF4J API记录异常。

Show Disqus Comments

Post Directory

扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章