Log 設定¶
Windows SDK の Log は独立した永続化キューを使用し、Logging Intake に送信します。C# と Native C/C++ は、サンプリング、レベルフィルタリング、RUM 関連付け、キューのセマンティクスを共有します。アプリケーションが Log API を明示的に呼び出して書き込んだ業務ログのみが、この送信経路に入ります。
Log の初期化設定¶
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 |
カスタム Log を受け入れるかどうか。無効の場合、AddLog() はキューに入りません。 |
EnableLinkRumData |
false |
現在の RUM セッション、ビュー、アクションを関連付けるかどうか。 |
SampleRate |
1.0 |
Log の独立サンプリングレート。範囲は 0.0~1.0。 |
LevelFilters |
null |
収集を許可する標準の Log レベル。null はレベルによるフィルタリングを行わないことを示します。 |
GlobalContext |
空の辞書 | 各 Log に追加されるグローバル属性。 |
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)) {
// 設定が無効なため、Log は有効になりません。
}
Native C/C++ のパラメータ¶
すべてのバージョン付き構造体では、最初に guance_log_config_init() を呼び出す必要があります。
| フィールド | デフォルト値 | 説明 |
|---|---|---|
enable_custom_log |
0 |
カスタム Log を受け入れるかどうか。 |
enable_link_rum_data |
0 |
現在の RUM コンテキストを関連付けるかどうか。 |
sample_rate |
1.0 |
Log の独立サンプリングレート。範囲は 0.0~1.0。 |
level_filter_mask |
0 |
標準レベルのビットマスク。0 の場合は標準レベルとカスタムステータスを受け付けます。 |
global_context |
NULL |
guance_log_property の配列。設定時に文字列を同期的にコピーします。 |
global_context_count |
0 |
グローバル属性の数。最大 1024。 |
discard_strategy |
GUANCE_LOG_DISCARD_NEW |
キューが満杯のとき、新しいデータまたは最も古いデータを破棄します。 |
Log、RUM、セッションリプレイは、SDK のディスクキャッシュ上限を共有します。キャッシュ容量、ファイル数、バッチサイズは、SDK の初期化 で一括設定します。
Logger のログ出力¶
サポートされている標準ステータスは、debug、info、warning、error、critical、ok です。
1 件の Log の内容は最大 30 KiB の UTF-8 データまで保持され、超過分は文字境界で切り捨てられます。属性に Token、認証ヘッダー、Cookie、ユーザーの機密情報を含めることはできません。
RUM 関連付け¶
Log の RUM 関連付けを有効にすると、SDK は現在の session_id、view_id、action_id を Log に書き込みます。関連付けでは、Log 書き込み時点のアクティブなコンテキストのみを使用し、キューに投入済みのデータを遡って変更することはありません。
キューと診断¶
Log と RUM は、独立したキューとアップロードカウントを使用します。Flush と正常なシャットダウンは、2種類のキューを同時に処理します。
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));
}