ログ

Current version: 4.0

この SDK には独自のログ機能が付属しています。 このページでは、その使用方法と拡張方法について説明します。

メッセージのログ記録

ログ機能には、IMClient で直接アクセスできます。

デバッグ メッセージの書き込み:

RequestResponse
client.Logger.Debug("A debug message.");

情報メッセージの書き込み:

RequestResponse
client.Logger.Info("An info message.");

警告メッセージの書き込み:

RequestResponse
client.Logger.Warn("A warning message.");

エラーメッセージの書き込み:

RequestResponse
client.Logger.Error("An error message.");

ログ レベル

MinimumLogLevel プロパティで最小ログ レベルを設定できます。

次の 4 つのログ レベルが定義されています。

  • デバッグ: デバッグ情報をログに記録します。
  • 情報: スクリプトの実行に関する一般的な情報をログに記録します。
  • 警告: 警告をログに記録します。
  • エラー: エラーをログに記録します。

最小ログ レベル

各ログ レベルには次の優先順位があります (最も低い優先順位は 1 です)。

  1. デバッグ
  2. 情報
  3. 警告
  4. エラー

スクリプトによるログ記録が始まるレベルを最小ログ レベルとします。 最小ログ レベル未満で発生したログは除外されます。 選択したログ レベルとそのレベルでログ記録の対象になるログ レベルとの対応関係を以下の表に示します。

選択したレベルログ記録の対象になるレベル
デバッグ- デバッグ- 情報- 警告- エラー
情報- 情報- 警告- エラー
警告- 警告- エラー
エラー- エラー

次の 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インターフェイスを実装する必要があります。 つづいて、IMClientLogger プロパティを設定します。

この 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 の既定のロガーです。

ConsoleLogger

ログ メッセージをコンソールに書き込みます。 既定では、メッセージは次のテンプレートに従っています。

RequestResponse
DateTime | LogLevel | Message

このテンプレートは、UseTemplatefalse に設定することで無効にすることができます。

Do you have some feedback for us?

If you have suggestions for improving this article,