コンテンツにスキップ

ログ設定

Windows SDK のログは独立した永続キューを使用し、Logging Intake に報告します。C# と Native C/C++ はサンプリング、レベルフィルタリング、リアルユーザーモニタリング(RUM)関連、およびキューセマンティクスを共有します。アプリケーションが Log API を明示的に呼び出して書き込んだビジネスログのみがこの報告パイプラインに入ります。

ログ初期化設定

GuanceSdk.Init(new GuanceConfig
{
    DatawayUrl = "https://openway.guance.com",
    ClientToken = "<client-token>",
    RumAppId = "<rum-app-id>",
    Logging = new LogConfig
    {
        EnableCustomLog = true,
        EnableLinkRumData = true,
        SampleRate = 1.0,
        LevelFilters = new[]
        {
            LogStatus.Info,
            LogStatus.Warning,
            LogStatus.Error,
            LogStatus.Critical
        },
        GlobalContext = new Dictionary<string, object?>
        {
            ["component"] = "desktop-ui"
        }
    }
});

C# パラメータ

パラメータ デフォルト値 説明
EnableCustomLog false カスタムログを受け入れるかどうか。有効にしないと AddLog() はキューに入りません。
EnableLinkRumData false 現在の RUM Session、View、Action に関連付けるかどうか。
SampleRate 1.0 ログの独立サンプリングレート。範囲 0.01.0
LevelFilters null 収集を許可する標準ログレベル。null はレベルによるフィルタリングを行わないことを示します。
GlobalContext 空の辞書 各ログに追加するグローバルプロパティ。
DiscardStrategy DiscardNew キューがいっぱいになったときに新しいデータまたは最も古いデータを破棄します。
guance_log_property global_context[] = {
    {"component", "native-ui"}
};

guance_log_config logging;
guance_log_config_init(&logging);
logging.enable_custom_log = 1;
logging.enable_link_rum_data = 1;
logging.sample_rate = 1.0;
logging.level_filter_mask =
    GUANCE_LOG_INFO |
    GUANCE_LOG_WARNING |
    GUANCE_LOG_ERROR |
    GUANCE_LOG_CRITICAL;
logging.global_context = global_context;
logging.global_context_count = 1;

if (!guance_log_configure(rum, &logging)) {
    // 設定が無効です。ログは有効になりません。
}

Native C/C++ パラメータ

すべてのバージョン管理構造体は、最初に guance_log_config_init() を呼び出す必要があります。

フィールド デフォルト値 説明
enable_custom_log 0 カスタムログを受け入れるかどうか。
enable_link_rum_data 0 現在の RUM コンテキストに関連付けるかどうか。
sample_rate 1.0 ログの独立サンプリングレート。範囲 0.01.0
level_filter_mask 0 標準レベルのビットマスク。0 は標準レベルとカスタムステータスを受け入れます。
global_context NULL guance_log_property 配列。設定時に文字列を同期コピーします。
global_context_count 0 グローバルプロパティの数。最大 1024
discard_strategy GUANCE_LOG_DISCARD_NEW キューがいっぱいになったときに新しいデータまたは最も古いデータを破棄します。

ログ、RUM、およびセッションリプレイは SDK のディスクキャッシュ上限を共有します。キャッシュ容量、ファイル数、バッチサイズは統一して SDK 初期化 で設定します。

Logger ログ出力

サポートされる標準ステータスは debuginfowarningerrorcriticalok です。

GuanceSdk.AddLog(
    "saved settings",
    LogStatus.Info,
    new Dictionary<string, object?>
    {
        ["operation"] = "save"
    });

GuanceSdk.AddLogs(new[]
{
    new LogEntry("first", LogStatus.Info),
    new LogEntry("second", "audit")
});
guance_log_property properties[] = {
    {"operation", "save"}
};

guance_log_add(
    rum,
    "saved settings",
    "info",
    properties,
    1);

guance_log_entry entries[] = {
    {"first", "info", nullptr, 0},
    {"second", "audit", nullptr, 0}
};
const int accepted = guance_log_add_batch(rum, entries, 2);

単一ログの内容は最大 30 KiB の UTF-8 データを保持し、超過分は文字境界で切り捨てられます。プロパティには Token、認証ヘッダー、Cookie、またはユーザーの機密情報を含めてはいけません。

RUM 関連

ログの RUM 関連を有効にすると、SDK は現在の session_idview_idaction_id をログに書き込みます。関連付けはログ書き込み時のアクティブなコンテキストのみを使用し、既にキューに入ったデータを遡って変更することはありません。

キューと診断

ログと RUM は独立したキューとアップロードカウントを使用します。Flush と正常終了は両方のキューを同時に処理します。

var diagnostics = GuanceSdk.GetLogDiagnosticsSnapshot();
Console.WriteLine(
    $"enqueued={diagnostics.LogsEnqueued}, " +
    $"droppedByConfig={diagnostics.LogsDroppedByConfiguration}, " +
    $"droppedBySampling={diagnostics.LogsDroppedBySampling}, " +
    $"droppedByLevel={diagnostics.LogsDroppedByLevel}, " +
    $"droppedByCapacity={diagnostics.LogsDroppedByCapacity}, " +
    $"uploaded={diagnostics.UploadSuccessCount}, " +
    $"lastError={diagnostics.LastUploadError}");
guance_log_diagnostics diagnostics;
guance_log_diagnostics_init(&diagnostics);
if (guance_log_get_diagnostics(rum, &diagnostics)) {
    printf("enqueued=%lld dropped=%lld uploaded=%lld\n",
        static_cast<long long>(diagnostics.logs_enqueued),
        static_cast<long long>(diagnostics.logs_dropped),
        static_cast<long long>(diagnostics.upload_success_count));
}

フィードバック

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