防止。净从记录到控制台?

0

的问题

我已经实现依赖注射在我的应用程序。 我配置的服务如下。

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>();

这一切工作的现除了现在的框架,记录到控制台,包括内容的任何疑问,发送给该数据库。

不知怎的内部记录已经被启用了但我没看到在哪里我已经启动。

我怎么可以防止的。净从记录到的画面?

注: Logger 是的一个实例,我自己的记录日志类 ConsoleLogger. 此类不行 ILogger 或者使用其他任何东西。网。 这是一个简单的定义类,还记录到控制台和一个文件。 记录这个记录仪的工作正常。 和我已经确认了.净记录是不被发送到此类中。

更新:

这是我的代码,用于配置的主机。

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();
}

和这里的代码,电话。

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 =>
{

});
.net-6.0 .net-core c# ilogger
2021-11-23 19:36:35
1

最好的答案

1

注意到

CreateDefaultBuilder 方法:
...
...
添加以下内容记录的提供者:

  • 控制台
  • 调试
  • EventSource
  • 事件日志(只有当上运行Windows)

参照 默认设置生成器

你会需要明确删除默认供应商和增加只有那些你想要的。

IHostBuilder hostBuilder = Host.CreateDefaultBuilder(args);

//...

hostBuilder.ConfigureLogging(logging => {
    logging.ClearProviders();

    //... add my providers here
});

//...

请注意,如果你想要避免其他扩展,添加自己的供应商,然后执行日志记录构成最后使你确信有关的记录仪。

2021-11-23 20:41:50

是的,这正是发生了什么。 我不知道为什么 ConfigureLogging 假定 logging 参数的类型 HostBuilderContext 但是我能够迫使它能 ILoggingBuilder. 谢谢你的帮助。
Jonathan Wood

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................