伐採
このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。
SDKには独自のログが付属しています。このページでその使い方と拡張方法について説明します。
ログメッセージ
ログはIMClient上で直接アクセス可能です。
debugメッセージの書き方:
MClient.Logger.Debug("A debug message.");
infoメッセージの書き方:
MClient.Logger.Info("An info message.");
warningメッセージの書き方:
MClient.Logger.Warn("A warning message.");
errorメッセージの書き方:
MClient.Logger.Error("An error message.");
伐採レベル
最小ログレベルはMinimumLogLevelプロパティに設定できます。
伐採には4つのレベルが定義されています。
- Debug: デバッグ情報を記録するために使われます。
- Info: スクリプトの実行に関する一般的な情報を記録するために使用されました。
- Warn: 警告を記録していました。
- Error: ログエラー。
最小対数レベル
ログレベルは優先順位順に並べられており(1が最低優先度です):
- Debug
- Info
- Warn
- Error
minimum log levelをスクリプトがログを始めるレベルとして定義します。minimum log levelは下位レベルのログを除外します。以下の表は、選択したログレベルと含まれるログレベル間のマッピングを説明します。
選択レベル
含まれるレベル
デバッグ
- デバッグ
- 情報
- 警告
- エラー
情報
- 情報
- 警告
- エラー
警告
- 警告
- エラー
エラー
- エラー
以下の4つの性質は、最小ログレベルに応じてtrueまたはfalseを返します。
- IsDebugEnabled
- IsInfoEnabled
- IsWarnEnabled
- IsErrorEnabled
イベント
ILoggerインターフェースはOnLogイベントを公開します。何かがログされる直前にイベントが発生します。ただし、最低ログレベルを下回ってログが記録された場合はイベントは発生しません。
このLogEventArgsには3つの性質があります。
- LogLevel記録されたメッセージのレベル。
- Message。
- Exception例外オブジェクト(もし存在する場合)です。
パフォーマンス
単純、静的または定数の文字列の場合は、文字列を構成して直接ロガーに渡します。
IOが必要な文字列については、ログレベルが無効化された際にログが無駄なオーバーヘッドを生じないように、System.Func (ラムダを含む)をロガーに渡すようにしてください。こうすることで、IOは実行されません。
さらに、デバッグメッセージは常にSystem.Funcを使って渡すのが良い考えです。なぜなら、デバッグは本番環境ではほとんど無効化されている可能性が高いからです。これにより、デバッグが無効化された際のオーバーヘッドを防げ、すべてのデバッグ文をコードから削除する必要はありません。このようにして、数千のデバッグログ文があっても、オーバーヘッドは完全に最小限に抑えられます。
カスタムロガーの作成
カスタムロガーを作成するには、Stylelabs.M.Sdk.Contracts.Logging.ILoggerインターフェースを実装する必要があります。次に、IMClientにLoggerプロパティを設定します。
SDKには、実装時の作業を大幅に軽減するベースクラスが付属ILogger。ベースクラスはStylelabs.M.Sdk.Models.Logging.LoggerBaseです。イベントの発生や最小ログレベルのチェックはすでに処理しています。
実装が必要な方法は以下の通りです。
- protected void LogDebug(string message)
- protected void LogInfo(string message)
- protected void LogWarn(string message)
- protected void LogError(string message, Exception exception = null)
- protected void LogError(Exception exception)
SDKロガー
SDKには2つのロガー実装が付属しています。
NullLogger
このロガーはログを全く処理しませんが、イベントは発生させます。これはIMClientのデフォルトのロガーです。
コンソールロガー
コンソールにログメッセージを書き込みます。デフォルトではメッセージは次のようにテンプレート化されています:
DateTime | LogLevel | Message
テンプレートはUseTemplateをfalseに設定することで無効化できます。
関連項目
- スクリプトのSDKにログインする
- Web SDKの診断クライアント