在Ballerina中,Span可以在调用链跟踪中使用。 Span定义可以在以下包中找到:
import ballerina/log;
import ballerina/runtime;
import ballerina/tracing;
在Ballerina中,Span类提供了跟踪功能,可以在Span对象中记录请求的属性。在下面的示例中,我们将使用Span上下文记录HTTP请求的属性:
import ballerina/http;
import ballerina/log;
import ballerina/tracing;
@http:ServiceConfig {
basePath: "/hello_world"
}
service helloWorld {
@http:ResourceConfig {
methods: ["GET"],
path: "/greet"
}
greet(endpoint caller, http:Request req) {
span clientSpan = check tracing:startSpan("client_span", "http");
var response = caller -> get("/hello_world/greetee");
var payload = check json.parse(response.getJsonPayload());
var headers = map http:Header[] {
http:Header("x-ballerina", "true")
};
var responseMessage = check new http:Response(payload, headers);
log:printInfo(responseMessage.toString());
span finishSpan = check clientSpan.finish();
return responseMessage;
}
@http:ResourceConfig {
methods: ["GET"],
path: "/greetee"
}
greetee(http:Request req) returns json {
span serviceSpan = check tracing:startSpan("service_span", "http");
var greeting = json`{"greeting": "Hello, World!"}`;
span finishSpan = check serviceSpan.finish();
return greeting;
}
}
在上面的例子中,定义了两个名为“client_span”和“service_span”的Span对象,用于记录HTTP请求和响应之间的跟踪信息。通过使用tracing:startSpan方法创建Span对象,并在需要的地方调用finish方法来结束Span记录。获得Span对象后,可以向其添加属性以记录请求的详细信息。