从内置日志记录机制向Autofac注册ASP.NET Core ILogger <>

时间:2018-08-20 07:36:18

标签: asp.net-core dependency-injection asp.net-core-2.0 autofac

我有一个使用Autofac作为DI容器的ASP.NET Core应用程序。我还使用了提供ILogger <>依赖项的内置日志记录机制。现在,我想在Autofac中注册它。怎么样?

2 个答案:

答案 0 :(得分:4)

如前所述,当您使用官方autofac-integration for asp.net-core时,您无需执行任何操作。如果您仍然想手动进行合法操作,则可以在ConfigureContainer方法中执行以下操作。

public void ConfigureContainer(ContainerBuilder builder)
{
   // ... more registrations
   builder.RegisterInstance(new LoggerFactory())
                .As<ILoggerFactory>();

   builder.RegisterGeneric(typeof(Logger<>))
          .As(typeof(ILogger<>))
          .SingleInstance();
}

请记住,他们没有添加特定的日志记录提供程序。

答案 1 :(得分:0)

您可以使用Autofac注册在IServiceCollection中注册的合并服务。为此,将以下内容添加到ConfigureServices方法中:

public IServiceProvider ConfigureServices(IServiceCollection services)
{
    // register classes in IServiceCollection
    ...

    var builder = new ContainerBuilder();

    // register services in Autofac
    ...

    builder.Populate(services);

    var container = builder.Build();
    return container.Resolve<IServiceProvider>();
}
相关问题