Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.
Zalecana akcja
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
- Microsoft.Extensions.Logging.ConsoleLoggerExtensions.AddConsole
- Microsoft.Extensions.Logging.ConsoleLoggerExtensions.AddConsoleFormatter
- Microsoft.Extensions.Logging.ConsoleLoggerExtensions.AddJsonConsole
- Microsoft.Extensions.Logging.ConsoleLoggerExtensions.AddSimpleConsole
- Microsoft.Extensions.Logging.ConsoleLoggerExtensions.AddSystemdConsole