Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Ao registrar logs no console usando o formatador JSON, as mensagens de log não são mais duplicadas na saída de log. Anteriormente, as mensagens normalmente apareciam três vezes: uma como o nível Messagesuperior, novamente dentro do State objeto e uma terceira vez como a cadeia de caracteres de formato original.
Versão introduzida
.NET 10
Comportamento anterior
Anteriormente, ao usar um registrador de console configurado com o formatador JSON, as mensagens de log eram duplicadas no resultado. Por exemplo, o código logger.LogInformation("This is an information message."); produziu a seguinte saída:
{
"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."
}
}
Como você pode ver, Message aparece duas vezes: uma vez como o nível Message superior e outra dentro do State objeto.
Novo comportamento
A partir do .NET 10, Message aparece apenas no nível superior e não dentro do State objeto (normalmente). A saída de log tem esta aparência:
{
"EventId": 0,
"LogLevel": "Information",
"Category": "Program",
"Message": "This is an information message.",
"State": {
"{OriginalFormat}": "This is an information message."
}
}
Tipo de mudança disruptiva
Essa alteração é uma mudança comportamental.
Motivo da alteração
A meta dessa alteração é reduzir a sobrecarga de registro em log desnecessária eliminando conteúdo duplicado. Ao evitar a formatação repetida da mesma mensagem, a alteração ajuda:
- Minimizar o tamanho da saída do log.
- Reduza a confusão causada por informações redundantes.
- Melhore o desempenho impedindo várias operações de formatação para a mesma mensagem.
No geral, isso resulta em logs mais limpos, mais eficientes e mais fáceis de ler.
Ação recomendada
Se você analisou anteriormente a saída de log para extrair a Message de dentro do State objeto, é seguro usar o nível Message superior, agora que a duplicação foi removida.
Observação
Em alguns casos, um Message ainda pode aparecer dentro do State objeto. Isso normalmente acontece quando seu conteúdo difere do nível Messagesuperior.
APIs afetadas
- 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