Skip to content

Trace Configuration

await FTTracer().setConfig(
  enableLinkRUMData: true,
  enableAutoTrace: true,
);
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 http and dio libraries, refer to example.