如何解决无法使用Serilog.Sinks.Http nuget包在appsettings中为serilog指定Http接收器
我在这样的代码中有一个serilog配置:
_seriLog = new LoggerConfiguration()
.WriteTo.DurableHttpUsingTimeRolledBuffers("http://192.168.100.178:8080")
.CreateLogger();
,并希望将其更改为配置文件。我添加了Seriolog.Settings.AppSettings nuget包,并尝试按照github上的说明进行操作。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="serilog:minimum-level" value="Verbose"/>
<add key="serilog:using:Http" value="Serilog.Sinks.Http" />
<add key="serilog:write-to:Http.requestUri" value="http://192.168.100.178:8080" />
</appSettings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
</configuration>
启动应用程序时,它挂起了。没有引发异常,并且堆栈跟踪对我来说没有意义。这是LogManager线程的堆栈跟踪: stack trace
更新:启动项目实际上抛出了一个异常:无法加载文件或程序集“ Serilog.Sinks.Http”。请参阅下面的解决方案。
解决方法
我认为您忘记将<add key="serilog:write-to:DurableHttpUsingTimeRolledBuffers" />
添加到您的配置中。我的配置如下所示,并且似乎可以正常工作。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="serilog:using:Http" value="Serilog.Sinks.Http" />
<add key="serilog:write-to:DurableHttpUsingTimeRolledBuffers" />
<add key="serilog:write-to:DurableHttpUsingTimeRolledBuffers.requestUri" value="http://localhost:8080/log-events" />
</appSettings>
</configuration>
,
实际上有一个异常被抛出。我没有看到这是因为我的异常设置被意外更改了。 ProjectA抱怨找不到Serilog.Sinks.Http。 ProjectA是一个.net Framework项目,它引用的是.net Standard项目B。我的记录器实现和Serilog软件包都在ProjectB内,这就是为什么ProjectA依赖它。我找到了this github issue,并将Serilog.Sink.Http nuget包添加到ProjectA。立即解决了问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。