本文档将介绍如何使用 SOFATracer 对 SpringMVC 进行埋点。
假设您已经基于 SOFABoot 构建了一个简单的 Spring Web 工程,那么可以通过以下步骤进行操作:
引入 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 配置项 | 说明 | 默认值 |
---|---|---|
| 日志输出目录 | SOFATracer 会优先输出到 |
| 是否关闭所有集成 SOFATracer 组件摘要日志打印 | false |
| 关闭指定 | false |
| SOFATracer 日志的滚动策略 |
|
| SOFATracer 日志的保留天数 | 默认保留 7 天 |
| 统计日志的时间间隔,单位:秒 | 默认 60 秒统计日志输出一次 |
| 透传数据能够允许存放的最大长度 | 默认值 1024 |
| SOFATracer 集成在 Spring MVC 的 Filter 生效的 Order | -2147483647(org.springframework.core.Ordered#HIGHEST_PRECEDENCE + 1) |
| SOFATracer 集成在 SpringMVC 的 Filter 生效的 URL Pattern 路径 | /* 全部生效 |