Udostępnij przez


Komunikat nie jest już zduplikowany w danych wyjściowych dziennika konsoli

Podczas rejestrowania w konsoli przy użyciu formatera JSON komunikaty dziennika nie są już duplikowane w danych wyjściowych dziennika. Wcześniej komunikaty zwykle pojawiały się trzy razy: raz jako najwyższy poziom Message, ponownie w State obiekcie, a po raz trzeci jako oryginalny ciąg formatu.

Wersja wprowadzona

.NET 10

Poprzednie zachowanie

Wcześniej podczas korzystania z rejestratora konsoli skonfigurowanego za pomocą formatera JSON komunikaty dziennika zostały zduplikowane w danych wyjściowych. Na przykład kod logger.LogInformation("This is an information message."); wygenerował następujące dane wyjściowe:

{
  "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."
  }
}

Jak widać, Message pojawia się dwa razy: raz jako najwyższy poziom Message i ponownie wewnątrz State obiektu.

Nowe zachowanie

Począwszy od platformy .NET 10, Message pojawia się tylko na najwyższym poziomie, a nie wewnątrz State obiektu (zazwyczaj). Dane wyjściowe dziennika wyglądają następująco:

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

Typ zmiany przełamującej

Ta zmiana jest zmianą behawioralną.

Przyczyna zmiany

Celem tej zmiany jest zmniejszenie niepotrzebnego nakładu pracy związanego z rejestrowaniem przez wyeliminowanie zduplikowanych zawartości. Unikając wielokrotnego formatowania tego samego komunikatu, zmiana pomaga:

  • Zminimalizuj rozmiar danych wyjściowych dziennika.
  • Zmniejsz zamieszanie spowodowane nadmiarowymi informacjami.
  • Zwiększ wydajność, uniemożliwiając wykonywanie wielu operacji formatowania dla tego samego komunikatu.

Ogólnie rzecz biorąc, skutkuje to czystszymi, bardziej wydajnymi i łatwiejszymi do odczytania dziennikami.

Jeśli wcześniej analizowano dane wyjściowe rejestrowania w celu wyodrębnienia Message z obiektu State, teraz, gdy usunięto duplikaty, można bezpiecznie użyć Message na najwyższym poziomie.

Uwaga / Notatka

W niektórych przypadkach obiekt Message może nadal występować w State obiekcie. Zwykle dzieje się tak, gdy jego zawartość różni się od najwyższego poziomu Message.

Interfejsy API, których dotyczy problem