使用autofac在SeriLog richher中注入依赖项

时间:2017-08-19 18:01:54

标签: autofac serilog

我想创建一个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 ... }
}

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

1 个答案:

答案 0 :(得分:3)

当你正在充实With<T>时,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>();