He implementado la inyección de dependencias en mi aplicación. Y yo configuración de servicios de la siguiente manera.
IConfiguration configuration = context.Configuration;
services.AddDbContext<ApplicationDbContext>(options =>
{
options.UseSqlServer(configuration.GetConnectionString("DefaultConnection"));
});
services.ConfigureRailIncApi(configuration);
services.Configure<EmailSettings>(configuration.GetSection("EmailSettings"));
services.AddSingleton(configuration);
services.AddSingleton(Logger);
services.AddSingleton<Application>();
services.AddSingleton<ServiceManager>();
Todo esto funciona bien excepto que ahora el marco es el registro de la consola, incluyendo el contenido de ninguna de las consultas enviadas a la base de datos.
De alguna manera, el interior se ha habilitado el registro, pero no veo donde he permitido.
¿Cómo se puede prevenir .NETO de registro a la pantalla?
Nota: Logger
es un ejemplo de mi propio registro de clase ConsoleLogger
. Esta clase no implementa ILogger
o utilizar de cualquier otra cosa de .NET. Es simplemente una clase personalizada que también los registros de la consola y un archivo. El registro de este registrador está trabajando bien. Y he confirmado el .NETO de los registros no están siendo enviados a esta clase.
Actualización:
Aquí está mi código que configura el host.
public void Configure(string[] args, Action< HostBuilderContext, IServiceCollection> configureServices, Action<IHostBuilder> configureHost)
{
IHostBuilder hostBuilder = Host.CreateDefaultBuilder(args);
hostBuilder.ConfigureServices((context, services) =>
{
services.AddSingleton(this);
configureServices(context, services);
});
configureHost(hostBuilder);
AppHost = hostBuilder.Build();
}
Y aquí está el código que llama.
ApplicationServices appServices = new();
appServices.Configure(args, (context, services) =>
{
IConfiguration configuration = context.Configuration;
services.AddDbContext<ApplicationDbContext>(options =>
{
options.UseSqlServer(configuration.GetConnectionString("DefaultConnection"));
});
services.ConfigureRailIncApi(configuration);
services.Configure<EmailSettings>(configuration.GetSection("EmailSettings"));
services.AddSingleton(configuration);
services.AddSingleton(Logger);
services.AddSingleton<Application>();
services.AddSingleton<ServiceManager>();
},
builder =>
{
});
ConfigureLogging
asumió lalogging
parámetro de tipoHostBuilderContext
pero yo era capaz de forzarlo a serILoggingBuilder
. Gracias por tu ayuda.