Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Při protokolování do konzoly pomocí formátovacího modulu JSON se zprávy protokolu už ve výstupu protokolu nezduplikují. Dříve se zprávy obvykle zobrazovaly třikrát: jednou jako nejvyšší úroveň Message, znovu v rámci objektu State a třetí jako původní formátovací řetězec.
Verze byla představena
.NET 10
Předchozí chování
Dříve při použití protokolovacího nástroje konzoly nakonfigurovaného s formátovacím modulem JSON se zprávy protokolu ve výstupu duplikovaly. Například kód logger.LogInformation("This is an information message."); vytvořil následující výstup:
{
"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 vidíte, Message zobrazí se dvakrát: jednou jako nejvyšší úroveň Message a znovu uvnitř objektu State .
Nové chování
Počínaje rozhraním .NET 10 Message se zobrazí pouze na nejvyšší úrovni, nikoli uvnitř objektu State (obvykle). Výstup protokolu vypadá takto:
{
"EventId": 0,
"LogLevel": "Information",
"Category": "Program",
"Message": "This is an information message.",
"State": {
"{OriginalFormat}": "This is an information message."
}
}
Typ zásadní změny
Tato změna je změna chování.
Důvod změny
Cílem této změny je snížit nepotřebné režijní náklady na protokolování odstraněním duplicitního obsahu. Díky tomu, že se vyhnete opakovanému formátování stejné zprávy, tato změna vám pomůže:
- Minimalizujte velikost výstupu protokolu.
- Zmenšete nejasnosti způsobené redundantními informacemi.
- Zvýšení výkonu tím, že zabráníte více operacím formátování pro stejnou zprávu.
Celkově to vede k čistějším, efektivnějším a přehlednějším protokolům.
Doporučená akce
Pokud jste dříve parsovali výstup protokolování pro extrahování Message z objektu State, je nyní bezpečné místo toho použít nadřazenou úroveň Message, protože duplicita byla odstraněna.
Poznámka:
V některých případech se může Message stále objevit v objektu State. K tomu obvykle dochází, když se jeho obsah liší od nejvyšší úrovně Message.
Ovlivněná rozhraní API
- 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