如果我们希望对项目中的业务方法,实现链路追踪,方便我们排查问题,可以使用如下的代码 引入依赖
引入依赖
<!-- Skywalking 工具类 -->
<dependency>
<groupld>org apache skywalking</groupld>
<artifactld>apm-toolkit-trace</artifactld>
<version>8.11.0</version>
</dependency>
版本号对应skywalking-agent的版本号
@Trace将方法加入追踪链路
如果一个业务方法想在ui界面的跟踪链路上显示出来,只需要在业务方法上加上@Trace注解即可
@Trace
public List<Order> list(){
return orderMapper.list();
}
点击查看跨度信息
加入@Tags或@Tag
我们还可以为追踪链路增加其他额外的信息,比如记录参数和返回信息
实现方式:在方法上增加@Tag或者@Tags。
@Tag注解中key = 方法名,value = returnedObj返回值
arg[0] = 参数
@Trace
@Tag(key = "list", value = "returnedObj")
public List<User> list(){
return userMapper.list();
}
@Trace
@Tags({@Tag(key = "param", value = "arg[0]"),
@Tag(key = "user", value = "returnedObj")})
public User getById(Integer id){
return userMapper.getById(id);
}
测试再次访问,就可以看到请求参数和返回值了
注意返回值,需要返回的对象实现toString()方式,否则这里看到的就是地址
示例
java代码
@Service
public class OauthClientServiceImpl extends BaseServiceImpl<OauthClientEntity, OauthClientMapper> implements OauthClientService {
@Trace
@Tags({@Tag(key = "clientId", value = "arg[0]"),
@Tag(key = "clientEntity", value = "returnedObj")})
@Override
public OauthClientEntity findByCode(String clientId) {
Wrapper<OauthClientEntity> query = new Wrapper<>();
query.eq("CLIENT_ID_",clientId);
OauthClientEntity entity = mapper.selectOne(query);
// mapper.findByCode(clientId);
return entity;
}
}
访问