次の方法で共有


コンソールログ出力でメッセージが重複しなくなりました

JSON フォーマッタを使用してコンソールにログを記録する場合、ログ メッセージはログ出力で重複しなくなります。 以前は、メッセージは通常、最上位レベルの Messageとして 1 回、 State オブジェクト内でもう一度、元の書式指定文字列として 3 回表示されます。

導入されたバージョン

.NET 10

以前の動作

以前は、JSON フォーマッタで構成されたコンソール ロガーを使用すると、ログ メッセージが出力で複製されていました。 たとえば、コード logger.LogInformation("This is an information message."); 次の出力が生成されます。

{
  "EventId": 0,
  "LogLevel": "Information",
  "Category": "Program",
  "Message": "This is an information message.",
  "State": {
    "Message": "This is an information message.",
    "{OriginalFormat}": "This is an information message."
  }
}

ご覧のように、 Message は 2 回表示されます。最上位レベルの Message として 1 回、 State オブジェクト内にもう一度表示されます。

新しい動作

.NET 10 以降では、 Message は最上位レベルにのみ表示され、 State オブジェクト内には表示されません (通常)。 ログ出力は次のようになります。

{
  "EventId": 0,
  "LogLevel": "Information",
  "Category": "Program",
  "Message": "This is an information message.",
  "State": {
    "{OriginalFormat}": "This is an information message."
  }
}

破壊的変更の種類

この変更は 動作の変更です。

変更の理由

この変更の目的は、重複するコンテンツを排除することで、不要なログのオーバーヘッドを減らすことです。 同じメッセージの繰り返しの書式設定を回避することで、この変更は次のことに役立ちます。

  • ログ出力サイズを最小限に抑えます。
  • 冗長な情報による混乱を減らします。
  • 同じメッセージに対して複数の書式設定操作を防ぐことで、パフォーマンスを向上させます。

全体として、これにより、よりクリーンで効率的で読みやすいログが得られます。

Message オブジェクト内からStateを抽出するためにログ出力を解析したことがある場合は、その重複が削除されたので、最上位レベルのMessageを使用しても安全です。

場合によっては、 MessageState オブジェクト内に引き続き表示されることがあります。 これは通常、コンテンツが最上位の Messageと異なる場合に発生します。

影響を受ける API