如果我们希望对项目中的业务方法,实现链路追踪,方便我们排查问题,可以使用如下的代码 引入依赖
引入依赖
<!-- 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;
}
}
访问



本文介绍了如何通过引入Skywalking的apm-toolkit-trace依赖,在Java项目中实现方法级别的链路追踪。通过在业务方法上添加@Trace注解,可以将这些方法纳入追踪链路,方便问题排查。同时,利用@Tag或@Tags注解,可以为追踪信息添加自定义的参数和返回值标签,以增强日志的详细性。确保返回对象实现了toString方法,以便于查看完整的返回信息。
1万+

被折叠的 条评论
为什么被折叠?



