コンテンツにスキップ

Trace 設定

await FTTracer().setConfig(
  enableLinkRUMData: true,
  enableAutoTrace: true,
);
フィールド 必須 説明
sampleRate double いいえ サンプリングレート。範囲 [0,1]。0 はサンプリングなし、1 は全サンプリング。デフォルト値は 1
traceType enum TraceType いいえ トレースタイプ。デフォルトは TraceType.ddTraceddTracezipkinMultizipkinSingletraceparentskywalkingjaeger をサポート
enableLinkRUMData bool いいえ リアルユーザーモニタリング(RUM)データと関連付けるかどうか。デフォルトは false
enableAutoTrace bool いいえ http リクエストに自動で Trace Header を追加するかどうか。デフォルトは falseHttpOverrides.global を変更して実装します。プロジェクトにカスタマイズ要件がある場合は、FTHttpOverrides を継承する必要があります
enableNativeAutoTrace bool いいえ ネイティブネットワークの自動トレースを有効にするかどうか。iOS は NSURLSession、Android は OKHttp。デフォルトは false

Tracer ネットワーク分散型トレーシング

自動収集

FTTracer().setConfigenableAutoTrace を有効にすることで実現します。

カスタム Tracer

使用方法

/// trace http リクエストヘッダーデータを取得
/// [key] 一意の ID
/// [url] リクエスト URL
Future<Map<String, String>> getTraceHeader(String url, {String? key})

コード例

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;
      });
    }
  }
}

http ライブラリと dio ライブラリの使用については、example を参照してください。

フィードバック

このページは役に立ちましたか?