Spring MVC 埋点接入

本文档将介绍如何使用 SOFATracer 对 SpringMVC 进行埋点。

假设您已经基于 SOFABoot 构建了一个简单的 Spring Web 工程,那么可以通过以下步骤进行操作:

  1. 引入 Tracer 依赖

  2. 添加 Controller

  3. 运行工程

  4. 查看日志

引入 Tracer 依赖

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

<dependency>
      <groupId>com.alipay.sofa</groupId>
      <artifactId>tracer-enterprise-sofa-boot-starter</artifactId>
</dependency>

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

添加 Controller

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

@RestController
public class SampleRestController {

    private static final String template = "Hello, %s!";

    private final AtomicLong counter = new AtomicLong();

    @RequestMapping("/greeting")
    public Greeting greeting(@RequestParam(value = "name", defaultValue = "World") String name) {
        Greeting greeting = new Greeting();
        greeting.setSuccess(true);
        greeting.setId(counter.incrementAndGet());
        greeting.setContent(String.format(template, name));
        return greeting;
    }

    public static class Greeting {

        private boolean success = false;
        private long id;
        private String content;

        public boolean isSuccess() {
            return success;
        }

        public void setSuccess(boolean success) {
            this.success = success;
        }

        public long getId() {
            return id;
        }

        public void setId(long id) {
            this.id = id;
        }

        public String getContent() {
            return content;
        }

        public void setContent(String content) {
            this.content = content;
        }
    }
}

运行工程

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

{
    success:true,
    id:1,
    content:"Hello, World!"
}

查看日志

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

-- tracelog
|-- spring-mvc-digest.log
|-- spring-mvc-stat.log

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

2018-07-1720: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 路径

/* 全部生效