Sdílet prostřednictvím


Zpráva se už ve výstupu protokolu konzoly nezdvojila

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.

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