Trace Configuration¶
| Field | Type | Required | Description |
|---|---|---|---|
| sampleRate | double | No | Sampling rate, range [0,1]. 0 means no collection, 1 means full collection. Default is 1. |
| traceType | enum TraceType | No | Trace type. Default is TraceType.ddTrace. Supports ddTrace, zipkinMulti, zipkinSingle, traceparent, skywalking, jaeger. |
| enableLinkRUMData | bool | No | Whether to link with RUM data. Default is false. |
| enableAutoTrace | bool | No | Whether to automatically add Trace Header in http requests. Default is false. Implemented by modifying HttpOverrides.global. If the project has customization needs, inherit FTHttpOverrides. |
| enableNativeAutoTrace | bool | No | Whether to enable native network auto-tracing for iOS NSURLSession and Android OKHttp. Default is false. |
Tracer Network Trace¶
Auto Collection¶
Enable enableAutoTrace via FTTracer().setConfig.
Custom Tracer¶
Usage¶
/// Get trace http request header data
/// [key] Unique id
/// [url] Request URL
Future<Map<String, String>> getTraceHeader(String url, {String? key})
Code Example¶
void httpClientGetHttp() async {
var url = 'http://reqeust.url.cn';
var httpClient = HttpClient();
String key = DateTime.now().millisecondsSinceEpoch.toString() + url;
var errorMessage = "";
HttpClientRequest request = await httpClient.getUrl(Uri.parse(url));
HttpClientResponse? response;
try {
final traceHeaders =
await FTTracer().getTraceHeader(key, request.uri.toString());
traceHeaders.forEach((key, value) {
request.headers.add(key, value);
});
response = await request.close();
} catch (exception) {
errorMessage = exception.toString();
} finally {
Map<String, dynamic> requestHeader = {};
Map<String, dynamic> responseHeader = {};
request.headers.forEach((name, values) {
requestHeader[name] = values;
});
if (response != null) {
response.headers.forEach((name, values) {
responseHeader[name] = values;
});
}
}
}
For usage with
httpanddiolibraries, refer to example.