Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
När du loggar till konsolen med JSON-formatering dupliceras inte längre loggmeddelanden i loggutdata. Tidigare visades meddelanden vanligtvis tre gånger: en gång som den översta nivån Message, igen i State objektet och en tredje gång som den ursprungliga formatsträngen.
Version lanserad
.NET 10
Tidigare beteende
När du tidigare använde en konsolloggare som konfigurerats med JSON-formatatorn duplicerades loggmeddelanden i utdata. Koden logger.LogInformation("This is an information message."); skapade till exempel följande utdata:
{
"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."
}
}
Som du ser Message visas två gånger: en gång som den översta nivån Message och igen inuti State objektet.
Nytt beteende
Från och med .NET 10 Message visas endast på den översta nivån och inte inuti State objektet (vanligtvis). Loggutdata ser ut så här:
{
"EventId": 0,
"LogLevel": "Information",
"Category": "Program",
"Message": "This is an information message.",
"State": {
"{OriginalFormat}": "This is an information message."
}
}
Typ av brytande ändring
Den här ändringen är en beteendeförändring.
Orsak till ändring
Målet med den här ändringen är att minska onödiga loggningskostnader genom att eliminera duplicerat innehåll. Genom att undvika upprepad formatering av samma meddelande hjälper ändringen till att:
- Minimera loggens utdatastorlek.
- Minska förvirringen som orsakas av redundant information.
- Förbättra prestanda genom att förhindra flera formateringsåtgärder för samma meddelande.
Sammantaget resulterar detta i renare, effektivare och lättare att läsa loggar.
Rekommenderad åtgärd
Om du tidigare parsade loggningsutdata för att extrahera Message från State objektet är det säkert att använda den översta nivån Message i stället, nu när dupliceringen har tagits bort.
Anmärkning
I vissa fall kan en Message fortfarande visas i objektet State . Detta inträffar vanligtvis när innehållet skiljer sig från den översta nivån Message.
Berörda API:er
- 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