【问题标题】:Inject a dependency in a SeriLog enricher with autofac使用 autofac 在 SeriLog 丰富器中注入依赖项
【发布时间】:2017-08-20 04:54:04
【问题描述】:

我想创建一个 Serilog Enricher 从依赖项中注入一些数据。 autofac 如何将我的依赖注入到丰富器中?

这是我的容器设置:

builder.Register((c, p) =>
{
  return new LoggerConfiguration()
   .Enrich.FromLogContext()
   .Enrich.With<MyEnricherWhichCanAddMoreDataFromADependency>()
   // ...
  .CreateLogger();
}).As<ILogger>();

虽然浓缩器看起来像

public class MyEnricherWhichCanAddMoreDataFromADependency : ILogEventEnricher
{
    public MyEnricherWhichCanAddMoreDataFromADependency(IDependency d) 
    { ... do stuff with the dependency ... }
}

构造函数注入似乎不起作用。还是我做错了什么?

【问题讨论】:

    标签: autofac serilog


    【解决方案1】:

    当您丰富With&lt;T&gt; 时,它所做的一切,字面意思就是is calling new T()

    如果你想通过 DI 传递浓缩器,你需要自己做。

    builder.Register((c, p) =>
    {
      var e = c.Resolve<MyEnricherWhichCanAddMoreDataFromADependency>();
      return new LoggerConfiguration()
       .Enrich.FromLogContext()
       .Enrich.With(e)
       // ...
      .CreateLogger();
    }).As<ILogger>();
    

    【讨论】:

      猜你喜欢
      • 2019-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多