コンテンツにスキップ

カスタムタグの使用

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 にもこの識別子が含まれます。SetUser() または guance_sdk_set_user() を呼び出すと、以降のデータは明示的なユーザー ID を使用します。クリア API を呼び出すと、以降のデータは元の匿名識別子に戻ります。対応するキャッシュディレクトリを削除すると、この識別子はリセットされます。

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

ユーザーの設定

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

ユーザーのクリア:

GuanceSdk.ClearUser();
guance_sdk_clear_user(rum);

ユーザーの切り替えは以降のデータにのみ影響し、すでにキューに追加されたデータは変更されません。

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

RUM、および連携を有効にした Log に適用されます:

GuanceSdk.AddGlobalContext("region", "cn-east-1");
GuanceSdk.AddGlobalContext("tenant", "tenant-a");
guance_sdk_add_global_context(rum, "region", "cn-east-1");
guance_sdk_add_global_context(rum, "tenant", "tenant-a");

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

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

GuanceSdk.AddRumGlobalContext("ui.framework", "wpf");
guance_rum_add_rum_context(rum, "ui.framework", "win32");

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

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

Logging = new LogConfig
{
    EnableCustomLog = true,
    GlobalContext = new Dictionary<string, object?>
    {
        ["logger_name"] = "desktop-client"
    }
}
guance_log_property context[] = {
    {"logger_name", "native-client"}
};
logging.global_context = context;
logging.global_context_count = 1;

完全なパラメータは Log 設定 を参照してください。

イベントレベル属性

C# の手動 RUM および Log API は、イベントレベルのディクショナリを受け入れます。Native Log は guance_log_property を受け入れます。Native RUM v1 の手動イベント API は、任意のイベントレベル属性構造を提供しません。

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

命名と予約フィールド

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

フィードバック

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