コンテンツにスキップ

Log 設定

この記事では、HarmonyOS Log の初期設定について説明します。

初期設定

import { FTSDK, FTLoggerConfig, Status } from '@guancecloud/ft_sdk/Index';

const logConfig = new FTLoggerConfig()
  .setSamplingRate(1.0)
  .setEnableCustomLog(true)
  .setEnableConsoleLog(true, '[business]')
  .setLogLevelFilters([
    Status.ERROR,
    Status.WARN,
    Status.INFO,
    Status.DEBUG
  ])
  .setEnableLinkRumData(true)
  .addGlobalContext('log_source', 'business')
  .setLogCacheLimitCount(10000);

FTSDK.installLogConfig(logConfig);
メソッド 型 必須 説明
setSamplingRate number 任意 ログのサンプリングレート。範囲は [0.0, 1.0]、デフォルトは 1.0
setEnableCustomLog boolean 任意 カスタムログを有効にするかどうか。デフォルトは false
setEnableConsoleLog enable: boolean, prefix?: string 任意 コンソールログを送信するかどうか。この設定は Hvigor Plugin に依存し、デフォルトは false です。console.log、debug、info、warn、error、trace に加えて、@ohos.hilog または @kit.PerformanceAnalysisKit からインポートした hilog.debug、info、warn、error、fatal をサポートします。ログレベルは次のように対応します。log、info -> info、debug、trace -> debug、warn -> warn、error -> error、fatal -> fatal。prefix には通常のメッセージプレフィックス、または { で始まる DataKit 収集ルールを指定できます。詳細はコンソールログフィルターを参照してください。この機能には ft-sdk 0.1.17 以降と @cloudcare/hvigor-ohos-plugin 0.1.1 以降が必要です
setEnableLinkRumData boolean 任意 RUM データを関連付けるかどうか。デフォルトは false
setLogLevelFilters Array<Status \| string \| { name: string }> 任意 ログレベルフィルター。指定可能な値は ERROR、WARN、INFO、DEBUG です
addGlobalContext Dictionary 任意 Log のグローバル属性を追加します。key,value をサポートします。追加ルールはこちらを参照してください
addGlobalContext key: string, value: object 任意 Log のグローバル属性を追加します。追加ルールはこちらを参照してください
setLogCacheLimitCount number 任意 ログデータのキャッシュ数の上限。デフォルトは 5000、最小値は 1000
setLogCacheDiscardStrategy LogCacheDiscard 任意 ログが上限に達した後のログ破棄ルールを設定します。デフォルトは LogCacheDiscard.DISCARD です。DISCARD は追加データを破棄し、DISCARD_OLDEST は古いデータを破棄します

コンソールログフィルター

setEnableConsoleLog(true, prefix) の 2 番目の引数は、自動収集される console.* および hilog.* ログをフィルタリングするために使用します。

  • 通常の文字列を渡す場合は、後方互換の動作を維持し、メッセージがその文字列で始まるログのみを収集します。渡さない場合はフィルタリングされません。
  • 最初の非空白文字が { である文字列を渡す場合は、DataKit ルール構文に従って許可ルールとして処理します。ルールに一致したログは SDK キューに入り、一致しないログはキューに入る前に破棄されます。複数のルールブロック間は「OR」関係です。

ルールでは message、log_source(console または hilog)を使用できます。hilog では tag と domain も使用できます。ログレベルは引き続き setLogLevelFilters(...) で独立して制御されます。

const logConfig = new FTLoggerConfig().setEnableConsoleLog(true,
  "{ log_source = 'hilog' and tag = 'Network' and message match ['^HTTP'] }");

Logger でのログ出力

FTLogger でカスタムログを送信する前に、setEnableCustomLog(true) を有効にする必要があります。1 件のログ内容の最大サイズは 30 KB で、超過分は切り捨てられます。

使用方法

/**
 * カスタムログを 1 件送信します。
 *
 * @param content ログの内容。
 * @param status ログレベル。`Status` またはレベル文字列を指定できます。
 * @param property 追加属性(オプション)。
 * @param isSilence ミュート処理を行うかどうか(オプション)。
 */
FTLogger.logBackground(
  content: string,
  status: Status | string,
  property?: Map<string, object>,
  isSilence?: boolean
): void

コード例

import { FTLogger, Status } from '@guancecloud/ft_sdk/Index';

// ログを 1 件送信します。
FTLogger.logBackground('登录成功', Status.INFO);

// 追加属性を渡します。
const property = new Map<string, object>();
property.set('user_id', new String('user-001'));
FTLogger.logBackground('支付完成', Status.INFO, property);

ログレベル

メソッド名 意味
Status.TRACE トレース
Status.DEBUG デバッグ
Status.INFO 情報
Status.WARN 警告
Status.ERROR エラー
Status.FATAL 致命的

推奨事項

  • setLogLevelFilters(...) は FTLogger のビジネスログの送信レベルを制御します。SDK 内部の診断ログの setSdkLogLevel(...) とは独立しています。
  • setEnableConsoleLog(...) と setEnableCustomLog(...) は独立しています。前者は console.* および hilog.* ログの自動収集に使用し、Hvigor Plugin のインストールと設定が必要です。後者は FTLogger によるカスタムログの手動送信に使用し、プラグインのインストールは不要です。
  • デバッグ段階では、setEnableCustomLog(true)、setDebug(true)、SDK デバッグログ を組み合わせて収集パイプラインを検証できます。
  • ログをユーザー行動、ページ、リソースデータと関連付けて分析したい場合は、setEnableLinkRumData(true) を同時に有効にすることを推奨します。
  • ログ量が多い場合は、サンプリングレートとレベルフィルターで送信量を制御できます。

フィードバック

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