原文: https://howtodoinjava.com/resteasy/resteasy-tomcat-7-slf4j-logging-example/
RESTEasy 在日志支持方面非常灵活。 它也可以与 log4j,slf4j 和java.util.logging协作。 用于确定需要使用哪个日志记录框架的算法是:
- 如果 log4j 在应用的类路径中,则将使用 log4j
- 如果 slf4j 在应用的类路径中,则将使用 slf4j
- 如果 log4j 或 slf4j 都不在类路径中,则
java.util.logging为默认值 - 如果 servlet 上下文参数
resteasy.logger.type设置为 JUL,LOG4J 或 SLF4J 将覆盖此默认行为
在这篇文章中,我们将学习如何在 tomcat 服务器中开发应用时使用 RESTEasy 来学习 slf4j 。 这篇文章是我上一篇关于 log4j 与 RESTEasy 集成的继续。 在这里,我要添加 slf4j 依赖项(JCL 绑定)并删除 log4j 依赖项。 我没有触碰应用代码,来显示“org.jboss.resteasy.logging.Logger”提供的灵活性。
使用的环境:
- Tomcat 7
- SLF4J 1.7.5
- RESTEasy JAX-RS 2.3.1.GA
配置 SLF4j 的步骤
1)在项目中包含依赖项
我正在添加 Maven 依赖项。 如果需要,您可以选择包括 jar 文件。
<!-- SLF4j --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.5</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-jcl</artifactId><version>1.7.5</version></dependency>
还要确保在类路径中存在 Commons Logging jar 文件。 如果您正在使用 maven 进行依赖项管理,则在添加 jax-rs 依赖项时,可能会将其包括在内。 因此,无需单独包含它。
2)在 API 方法中使用日志语句
始终使用“org.jboss.resteasy.logging.Logger”,因为它是使用上述给定算法配置的,因此完全将日志记录框架的依赖项与应用代码分离。 这意味着,如果您以后决定使用 slf4j 代替 log4j,则只需将 slf4j 放入运行时类路径中,然后从类路径中删除 log4j。 仅此而已 !!
import org.jboss.resteasy.logging.Logger;@XmlAccessorType(XmlAccessType.NONE)@XmlRootElement(name = "user-management")@Path("/user-management")public class UserService{Logger log = Logger.getLogger(UserService.class);@GET@Path("/users/{id : \d+}")public User getUserById(@PathParam("id") Integer id) {log.info("GET API called for id : " + id);User user = new User();user.setId(id);user.setFirstName("demo");user.setLastName("user");return user;}}
3)测试日志记录
调用上述 RESTFul API 会记录以下事件:
May 13, 2013 11:39:10 AM org.slf4j.impl.JCLLoggerAdapter infoINFO: Adding scanned resource: com.howtodoinjava.service.UserServiceMay 13, 2013 11:39:10 AM org.slf4j.impl.JCLLoggerAdapter infoINFO: GET API called for id : 10
学习愉快!
