Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Wenn Sie sich mit dem JSON-Formatierer bei der Konsole anmelden, werden Protokollmeldungen in der Protokollausgabe nicht mehr dupliziert. Zuvor wurden Nachrichten in der Regel dreimal angezeigt: einmal als oberste Ebene Message, wieder innerhalb des State Objekts und ein drittes Mal als ursprüngliche Formatzeichenfolge.
Eingeführte Version
.NET 10
Vorheriges Verhalten
Bei Verwendung eines Konsolenloggers, der mit dem JSON-Formatierer konfiguriert ist, wurden Protokollmeldungen doppelt ausgegeben. Der Code logger.LogInformation("This is an information message."); erzeugte beispielsweise die folgende Ausgabe:
{
"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."
}
}
Wie Sie sehen können, Message wird zweimal angezeigt: einmal als oberste Ebene Message und wieder innerhalb des State Objekts.
Neues Verhalten
Ab .NET 10 erscheint Message nur auf der obersten Ebene und typischerweise nicht innerhalb des State Objekts. Die Protokollausgabe sieht wie folgt aus:
{
"EventId": 0,
"LogLevel": "Information",
"Category": "Program",
"Message": "This is an information message.",
"State": {
"{OriginalFormat}": "This is an information message."
}
}
Art der einschneidenden Änderung
Diese Änderung ist eine Verhaltensänderung.
Grund für Änderung
Ziel dieser Änderung ist es, unnötigen Protokollierungsaufwand zu reduzieren, indem doppelte Inhalte eliminiert werden. Wenn Sie wiederholte Formatierungen derselben Nachricht vermeiden, hilft die Änderung:
- Minimieren Sie die Protokollausgabegröße.
- Reduzieren Sie Verwirrung, die durch Informationen entsteht, die redundant sind.
- Verbessern Sie die Leistung, indem Sie mehrere Formatierungsvorgänge für dieselbe Nachricht verhindern.
Insgesamt führt dies zu saubereren, effizienteren und einfacher zu lesenden Protokollen.
Empfohlene Aktion
Wenn Sie zuvor die Protokollierungsausgabe analysiert haben, um das Message aus dem State Objekt zu extrahieren, ist es sicher, nun die oberste Message zu verwenden, da die Duplizierung entfernt wurde.
Hinweis
In einigen Fällen wird ein Message Objekt möglicherweise noch innerhalb des State Objekts angezeigt. Dies geschieht in der Regel, wenn sich der Inhalt von der obersten Ebene Messageunterscheidet.
Betroffene APIs
- 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