全部产品
云市场

引入 Spring MVC 打印 Tracer 日志

更新时间:2019-11-06 14:56:34

SOFABoot 提供了 Spring MVC 打印 Tracer 日志的功能。本文具体介绍如何引入 Spring MVC 的 Tracer 日志。

操作步骤如下:

  1. 引入 Tracer 依赖
  2. 添加 Controller
  3. 运行工程
  4. 查看日志

引入 Tracer 依赖

在 SOFABoot 的 Web 项目中引入如下 Tracer 依赖:

  1. <dependency>
  2. <groupId>com.alipay.sofa</groupId>
  3. <artifactId>tracer-enterprise-sofa-boot-starter</artifactId>
  4. </dependency>

添加 Tracer starter 依赖后,可在 SOFABoot 的全局配置文件中添加配置项目以定制 Tracer 的行为。详情见 Tracer 配置项说明

添加 Controller

如果您的 Web 工程中没有基于 Spring MVC 框架构建的 Controller,那么可以按照如下方式添加一个 Controller;如果已经有 Controller,那么可直接访问相应的服务。

  1. @RestController
  2. public class SampleRestController {
  3. private static final String template = "Hello, %s!";
  4. private final AtomicLong counter = new AtomicLong();
  5. @RequestMapping("/greeting")
  6. public Greeting greeting(@RequestParam(value = "name", defaultValue = "World") String name) {
  7. Greeting greeting = new Greeting();
  8. greeting.setSuccess(true);
  9. greeting.setId(counter.incrementAndGet());
  10. greeting.setContent(String.format(template, name));
  11. return greeting;
  12. }
  13. public static class Greeting {
  14. private boolean success = false;
  15. private long id;
  16. private String content;
  17. public boolean isSuccess() {
  18. return success;
  19. }
  20. public void setSuccess(boolean success) {
  21. this.success = success;
  22. }
  23. public long getId() {
  24. return id;
  25. }
  26. public void setId(long id) {
  27. this.id = id;
  28. }
  29. public String getContent() {
  30. return content;
  31. }
  32. public void setContent(String content) {
  33. this.content = content;
  34. }
  35. }
  36. }

运行工程

可以将 SOFABoot 工程导入到 IDE 中,工程编译正确后,运行工程里面中的 main 方法启动应用。以上面添加的 Controller 为例,可以通过在浏览器中输入 http://localhost:8080/greeting 来访问 REST 服务,结果类似如下:

  1. {
  2. success: true,
  3. id: 1,
  4. content: "Hello, World!"
  5. }

查看日志

在 SOFABoot 的配置文件 application.properties 中可定义日志打印目录。假设配置的日志打印目录是 ./logs,即当前应用的根目录,应用名设置为 spring.application.name=mvc-client,那么在当前工程的根目录下可以看到类似如下结构的日志文件:

  1. -- tracelog
  2. |-- spring-mvc-digest.log
  3. |-- spring-mvc-stat.log

打开 spring-mvc-digest.log 可看到具体的输出内容。下面是一条日志记录的例子:

  1. 2018-07-17 20:01:34.719,mvc-client,0a0fe91a1531828894436100149692,0,http://localhost:8080/greeting,GET,200,-1B,49B,281ms,http-nio-8080-exec-1,

各输出字段的具体含义,详见 中间件日志 > Spring MVC 日志

Tracer 配置项说明

SOFATracer 配置项 说明 默认值
logging.path 日志输出目录 SOFATracer 会优先输出到 logging.path 目录下;如果没有配置日志输出目录,那默认输出到 ${user.home}
com.alipay.sofa.tracer.disableDigestLog 是否关闭所有集成 SOFATracer 组件摘要日志打印 false
com.alipay.sofa.tracer.disableConfiguration[${logType}] 关闭指定 ${logType} 的 SOFATracer 组件摘要日志打印。${logType} 是指具体的日志类型,如:spring-mvc-digest.log false
com.alipay.sofa.tracer.tracerGlobalRollingPolicy SOFATracer 日志的滚动策略 .yyyy-MM-dd:按照天滚动;
.yyyy-MM-dd_HH:按照小时滚动。
默认不配置按照天滚动。
com.alipay.sofa.tracer.tracerGlobalLogReserveDay SOFATracer 日志的保留天数 默认保留 7 天
com.alipay.sofa.tracer.statLogInterval 统计日志的时间间隔,单位:秒 默认 60 秒统计日志输出一次
com.alipay.sofa.tracer.baggageMaxLength 透传数据能够允许存放的最大长度 默认值 1024
com.alipay.sofa.tracer.springmvc.filterOrder SOFATracer 集成在 Spring MVC 的 Filter 生效的 Order -2147483647(org.springframework.core.Ordered#HIGHEST_PRECEDENCE + 1)
com.alipay.sofa.tracer.springmvc.urlPatterns SOFATracer 集成在 SpringMVC 的 Filter 生效的 URL Pattern 路径 /* 全部生效