Skip to content

Trace Configuration

await FTTracer().setConfig(
  enableLinkRUMData: true,
  enableAutoTrace: true,
);
Field Type Required Description
sampleRate double No Sampling rate, value range [0,1], 0 means no collection, 1 means full collection, default value is 1
traceType enum TraceType No Trace type, default TraceType.ddTrace, supports ddTrace, zipkinMulti, zipkinSingle, traceparent, skywalking, jaeger
enableLinkRUMData bool No Whether to link with RUM data, default false
enableAutoTrace bool No Whether to automatically add Trace Header in http requests, default false. Implemented by modifying HttpOverrides.global. If the project has customization needs, it must inherit FTHttpOverrides
enableNativeAutoTrace bool No Whether to enable native network auto-tracing, iOS NSURLSession, Android OKHttp, default false

Tracer Network Trace

Automatic Collection

Enabled by setting 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 using the http library and dio library, refer to example.

Feedback

Is this page helpful? ×