コンテンツにスキップ

カスタムタグ

# カスタムタグの使用 {#track}

<!-- markdownlint-disable MD046 -->

C# と Native C/C++ はどちらもユーザー情報、SDK グローバルコンテキスト、RUM グローバルコンテキストをサポートします。Log には独立したグローバル属性を設定することもできます。

## SDK の実行時追加

### 匿名ユーザー識別子

C# と Native C/C++ は初期化時に、未ログインユーザーに対して `ft.rd_` で始まる匿名 `userid` を生成します。この識別子は RUM アプリケーション ID ごとに分離され、SDK キャッシュディレクトリ内の `identity` サブディレクトリに保存されます。同じ RUM アプリケーション ID とキャッシュディレクトリを持つプロセスでは、再起動後も同じ識別子が引き続き使用されます。C++ ホストと Electron Bridge もこのセマンティクスを再利用します。

ユーザー API を呼び出さない場合、RUM データは匿名 `userid` を使用します。RUM に関連付けられた Log を有効にすると、その Log にもこの識別子が付与されます。`SetUser()` または `guance_sdk_set_user()` を呼び出すと、以降のデータは明示的なユーザー ID を使用するようになります。クリア API を呼び出すと、以降のデータは再び元の匿名識別子を使用するようになります。対応するキャッシュディレクトリを削除すると、この識別子はリセットされます。

ID ファイルが書き込み不可であるか、ロックに失敗した場合、SDK は現在のプロセスに対して一時的な匿名識別子を使用し、C# の `DiagnosticListener` または Native の診断出力を介して永続化の失敗を報告します。テレメトリ収集が中断されることはありません。

### ユーザーの設定

=== ".NET / C#"

    ```csharp
    GuanceSdk.SetUser(
        id: "user-123",
        name: "Alice",
        email: "alice@example.com",
        extra: new Dictionary<string, object?>
        {
            ["plan"] = "enterprise"
        });
    ```

=== "Native C/C++"

    ```cpp
    guance_sdk_set_user(
        rum,
        "user-123",
        "Alice",
        "alice@example.com");
    ```

ユーザーのクリア:

=== ".NET / C#"

    ```csharp
    GuanceSdk.ClearUser();
    ```

=== "Native C/C++"

    ```cpp
    guance_sdk_clear_user(rum);
    ```

ユーザーの切り替えは後続のデータにのみ影響し、既にキューに入れられたデータは変更されません。

### SDK グローバルコンテキスト

RUM および関連付けが有効な Log に適用されます:

=== ".NET / C#"

    ```csharp
    GuanceSdk.AddGlobalContext("region", "cn-east-1");
    GuanceSdk.AddGlobalContext("tenant", "tenant-a");
    ```

=== "Native C/C++"

    ```cpp
    guance_sdk_add_global_context(rum, "region", "cn-east-1");
    guance_sdk_add_global_context(rum, "tenant", "tenant-a");
    ```

### RUM グローバルコンテキスト

RUM データにのみ追加されます:

=== ".NET / C#"

    ```csharp
    GuanceSdk.AddRumGlobalContext("ui.framework", "wpf");
    ```

=== "Native C/C++"

    ```cpp
    guance_rum_add_rum_context(rum, "ui.framework", "win32");
    ```

### Log グローバルコンテキスト

Log 専用のタグは、Log の初期化時に設定します:

=== ".NET / C#"

    ```csharp
    Logging = new LogConfig
    {
        EnableCustomLog = true,
        GlobalContext = new Dictionary<string, object?>
        {
            ["logger_name"] = "desktop-client"
        }
    }
    ```

=== "Native C/C++"

    ```cpp
    guance_log_property context[] = {
        {"logger_name", "native-client"}
    };
    logging.global_context = context;
    logging.global_context_count = 1;
    ```

完全なパラメータについては、[Log 設定](config-log.md)を参照してください。

### イベントレベルの属性

C# の手動 RUM および Log API はイベントレベルの辞書を受け付けます。Native Log は `guance_log_property` を受け付けます。Native RUM v1 の手動イベント API は任意のイベントレベルの属性構造を提供しません。

```csharp
GuanceSdk.AddAction(
    "Save",
    "click",
    TimeSpan.FromMilliseconds(25),
    new Dictionary<string, object?>
    {
        ["result"] = "success"
    });

命名と予約フィールド

  • 小文字で、安定しており、集約可能なフィールド名を使用してください(例:feature.name)。
  • Token、Cookie、パスワード、または直接的な個人情報を書き込まないでください。
  • app_idserviceenvversionsdk_namesession_idview_idaction_id およびプラットフォームフィールドは SDK が管理します。
  • カスタムコンテキストは SDK の予約フィールドを上書きできません。
  • Native コンテキスト API は文字列を同期的にコピーします。空のキーを渡さないでください。

```

フィードバック

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