如何将依赖关系传递给Serilog Enricher?

时间:2016-10-03 18:53:44

标签: c# dependency-injection serilog

我在我的应用程序中使用Serilog进行日志记录。当我配置记录器时,我有这样的代码:

MySerilogEnricher

我想在我的WithInstance类中注入一些依赖项,但是当我尝试时,我得到了这个编译器错误:

  

错误CS0310:'SerilogEnricher'必须是带有a的非抽象类型   public parameterless constructor,以便将其用作参数   通用类型或方法中的'TEnricher'   'LoggerEnrichmentConfiguration.With()'

我理解为什么我会收到此错误,但我看不到一个简单的方法。理想情况下,我可以使用这样的var instance = new MySerilogEnricher(myDependency); var log = new LoggerConfiguration() .Enrich.WithInstance<MySerilogEnricher>(instance) .ReadAppSettings() .CreateLogger(); 调用:

MySerilogEnricher

有没有办法将依赖项传递给function actAdd(){ $this->load->model("person_model"); $query = $this->person_model->actPerson(); if($query == TRUE){ redirect('person/'); }else{ echo "<script type='text/javascript'>alert('Failed !! Person is Exist.')</script>"; echo "<script type='text/javascript'>window.location='".base_url()."person/'</script>"; } } ?我可能有一个带有MySerilogEnricher的类,并在属性中将依赖项传递给它,但这看起来很混乱。

1 个答案:

答案 0 :(得分:3)

您可以使用不带泛型的.With()方法来传递richher的实例。所以在你的例子中,它将是:

var instance = new MySerilogEnricher(myDependency);
var log = new LoggerConfiguration()
    .Enrich.With(instance)
    .ReadAppSettings()
    .CreateLogger();