Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

397
Views
Los registros de aplicaciones de .NET 6 están en formato JSON después de la migración desde .NET Core 3.1 (Docker)

Recientemente actualicé mi API REST de .NET Core de 3.1 a 6.0 . Cuando ejecuto la aplicación localmente sin Docker en la configuración de desarrollo o versión, los registros se formatean como siempre:

ingrese la descripción de la imagen aquí

Al ejecutar la aplicación como contenedor de Docker, los registros se transforman en JSON . Esto apareció después de la migración a .Net 6.

ingrese la descripción de la imagen aquí

¿Cómo puedo volver al formato de registro estándar en el entorno de Docker?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

El cambio se realizó en .NET 5, no en 6. En .NET Core 3.1, se corrigió el formato de registro de la consola. En .NET 5 , ahora se puede personalizar con 3 formateadores predefinidos: Simple (el antiguo), Systemd y Json (el predeterminado). Es posible crear un formateador personalizado.

Como muestran los documentos, es posible usar el formateador simple usando el método AddSimpleConsole en lugar de AddConsole :

 using ILoggerFactory loggerFactory = LoggerFactory.Create(builder => builder.AddSimpleConsole(options => { options.IncludeScopes = true; options.SingleLine = true; options.TimestampFormat = "hh:mm:ss "; }));

Existen métodos similares para los otros dos formateadores: AddSystemdConsole y AddJsonConsole .

Es posible configurar el formateador a través de la configuración :

 { "Logging": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" }, "Console": { "LogLevel": { "Default": "Information", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" }, "FormatterName": "json", "FormatterOptions": { "SingleLine": true, "IncludeScopes": true, "TimestampFormat": "HH:mm:ss ", "UseUtcTimestamp": true, "JsonWriterOptions": { "Indented": true } } } }, "AllowedHosts": "*" }

Finalmente, es posible crear un formateador completamente nuevo al heredar de ConsoleFormatter y anular el método Write :

 public sealed class CustomFormatter : ConsoleFormatter, IDisposable { ... public override void Write<TState>( in LogEntry<TState> logEntry, IExternalScopeProvider scopeProvider, TextWriter textWriter) { string? message = logEntry.Formatter?.Invoke( logEntry.State, logEntry.Exception); if (message is null) { return; } CustomLogicGoesHere(textWriter); textWriter.WriteLine(message); } ... }
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!