Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

321
Vistas
¿Cómo arreglar los métodos obsoletos de ILoggerFactory?

Actualicé mi proyecto a .NET Core 2.2.x y recibí una advertencia obsoleta con respecto al siguiente código, ambas líneas:

 public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { loggerFactory.AddConsole(Configuration.GetSection("Logging"));

La sugerencia para corregir es The recommended alternative is AddConsole(this ILoggingBuilder builder) . Pensé que eso es lo que estoy usando.

¿Que me estoy perdiendo aqui?

over 4 years ago · Santiago Trujillo
6 Respuestas
Responde la pregunta

0

La recomendación de la documentación para usar AddConsole(this ILoggingBuilder builder) es correcta, pero para que funcione, debe agregar una referencia al paquete NuGet Microsoft.Extensions.Logging.Console .

over 4 years ago · Santiago Trujillo Denunciar

0

Tuve el mismo problema hoy.

Elimine su configuración de registro de Startup.cs y vaya a su archivo Program.cs y agregue algo como:

 var host = new WebHostBuilder() .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseStartup<Startup>() .ConfigureLogging((hostingContext, logging) => { logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging")); logging.AddConsole(); logging.AddDebug(); }) .Build();

Esto usó el 'constructor' porque la variable 'registro' es un IloggingBuilder (mientras que su código todavía usa ILoggerFactory)

ACTUALIZAR: El otro método que acabo de probar es permanecer dentro de Startup.cs pero mover las cosas de registro del método 'Configurar' a 'Configurar Servicios' de esta manera:

 public void ConfigureServices(IServiceCollection services) { services.AddLogging(loggingBuilder => { loggingBuilder.AddConfiguration(Configuration.GetSection("Logging")); loggingBuilder.AddConsole(); loggingBuilder.AddDebug(); }); }

Quizás mantiene Program.cs menos contaminado...

over 4 years ago · Santiago Trujillo Denunciar

0

No te preocupes por eso, ¡esto es lo más tonto del mundo!

Nota

El siguiente ejemplo de código usa un constructor ConsoleLoggerProvider que quedó obsoleto en la versión 2.2. Los reemplazos adecuados para las API de registro obsoletas estarán disponibles en la versión 3.0. Mientras tanto, es seguro ignorar y suprimir las advertencias.

En caso de que pensaras que olvidaste lo que significa Obsoleto , ¡no lo habías hecho! No se preocupe por eso y simplemente ignórelo por ahora, o suprima la advertencia (lo siento, no tengo el código a mano).

(Ojalá pusieran una mejor explicación de por qué se hizo esto, a eso me refiero con tonto).

over 4 years ago · Santiago Trujillo Denunciar

0

De acuerdo con el problema abierto en GitHub para esto, los métodos de reemplazo ya se están llamando si usa el método CreateDefaultBuilder() en su Program.cs.

https://github.com/aspnet/Docs/issues/9829

El único problema que tengo es que solo los encendí para entornos que no son de producción... y no veo una manera de hacerlo en el futuro.

over 4 years ago · Santiago Trujillo Denunciar

0

Recibí la misma advertencia cuando estaba actualizando el código de registro de .Net Core 2.1 a 3.0. La forma recomendada de realizar la actualización está documentada en MSDN .

En mi caso, estaba tratando de obtener una instancia de LoggerFactory para consola, que es bastante sencilla en .Net Core 3.0:

 using (var loggerFactory = LoggerFactory.Create(builder => builder.AddConsole())) { // use loggerFactory }
over 4 years ago · Santiago Trujillo Denunciar

0

Si no tiene acceso a LoggerFactory.Create() , todavía puede usar ILoggerFactory con el método AddProvider() dándole un ConsoleLoggerProvider() pero es un poco molesto si quiere hacer algo simple. El problema es que ConsoleLoggerProvider() requiere un IOptionsMonitor < ConsoleLoggerOptions > como parámetro y es lo más fácil de hacer si

  • no tiene acceso al mecanismo de opciones en su base de código (mi problema), o
  • los mecanismos de opciones reales en su base de código existente no coinciden con IOptionsMonitor<> , o
  • usted tiene otras razones para no utilizar las funciones de opciones de ASP.Net

es crear una clase ficticia:

 using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Console; using Microsoft.Extensions.Options; class DummyConsoleLoggerOptionsMonitor : IOptionsMonitor<ConsoleLoggerOptions> { private readonly ConsoleLoggerOptions option = new ConsoleLoggerOptions(); public DummyConsoleLoggerOptionsMonitor(LogLevel level) { option.LogToStandardErrorThreshold = level; } public ConsoleLoggerOptions Get(string name) { return this.option; } public IDisposable OnChange(Action<ConsoleLoggerOptions, string> listener) { return new DummyDisposable(); } public ConsoleLoggerOptions CurrentValue => this.option; private sealed class DummyDisposable : IDisposable { public void Dispose() { } } }

Luego puede usar su ILoggerFactory como:

 factory.AddProvider( new ConsoleLoggerProvider( new DummyConsoleLoggerOptionsMonitor(LogLevel.Debug)));
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda