다음을 통해 공유


콘솔 로그 출력에서 메시지가 더 이상 중복되지 않음

JSON 포맷터를 사용하여 콘솔에 로깅할 때 로그 메시지는 로그 출력에서 더 이상 중복되지 않습니다. 이전에는 메시지가 일반적으로 세 번 나타났습니다. 한 번은 최상위로 Message, 다시 개체 내에서 State , 세 번째는 원래 형식 문자열로 나타났습니다.

도입된 버전

.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는 두 번 나타납니다. 하나는 최상위 수준 Message로, 또 하나는 State 객체 내부에 다시 나타납니다.

새 동작

.NET 10에서는 Message가 일반적으로 State 개체 내부가 아니라 최상위 수준에서만 나타납니다. 로그 출력은 다음과 같습니다.

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

파괴적 변경 유형

이 변경은 동작 변경입니다.

변경 이유

이 변경의 목표는 중복 콘텐츠를 제거하여 불필요한 로깅 오버헤드를 줄이는 것입니다. 동일한 메시지의 반복된 서식을 방지하여 변경하면 다음을 수행할 수 있습니다.

  • 로그 출력 크기를 최소화합니다.
  • 중복 정보로 인한 혼동을 줄입니다.
  • 동일한 메시지에 대해 여러 서식 지정 작업을 방지하여 성능을 향상시킵니다.

전반적으로 이로 인해 더 깨끗하고 효율적이며 읽기 쉬운 로그가 생성됩니다.

이전에 로깅 출력을 구문 분석하여 개체 내에서 MessageState를 추출한 경우, 복제가 제거되었으므로 이제 최상위 수준의 Message를 사용하는 것이 안전합니다.

비고

경우에 따라 Message 개체 내에 State 여전히 나타날 수 있습니다. 일반적으로 콘텐츠가 최상위 수준 Message과 다를 때 발생합니다.

영향을 받는 API