繁体   English   中英

如何将依赖项传递给Serilog Enricher?

[英]How do I pass a dependency to a Serilog Enricher?

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

var log = new LoggerConfiguration()
    .Enrich.With<MySerilogEnricher>()
    .ReadAppSettings()
    .CreateLogger();

我想向MySerilogEnricher类中注入一些依赖,但是当我尝试时,出现此编译器错误:

错误CS0310:“ SerilogEnricher”必须是具有公共无参数构造函数的非抽象类型,以便在通用类型或方法“ LoggerEnrichmentConfiguration.With()”中将其用作参数“ TEnricher”

我了解为什么会收到此错误,但是我看不到解决此问题的简便方法。 理想情况下,会有一个WithInstance调用,我可以这样使用:

var instance = new MySerilogEnricher(myDependency);
var log = new LoggerConfiguration()
    .Enrich.WithInstance<MySerilogEnricher>(instance)
    .ReadAppSettings()
    .CreateLogger();

有什么办法可以将依赖项传递给MySerilogEnricher吗? 我也许可以在其中带有MySerilogEnricher的类,并在属性中将依赖项传递给它,但这似乎很麻烦。

您可以在不使用泛型的情况下使用.With()方法来传递扩展程序实例。 因此,在您的示例中,它将是:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM