无法使用 Serilog.Sinks.Http nuget 包在 appsettings 中为 serilog 指定 Http sink
Cannot specify Http sink for serilog in appsettings with Serilog.Sinks.Http nuget package
我在这样的代码中有一个 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 的 ProjectB。我的记录器实现和 Serilog 包都在 ProjectB 中,这就是 ProjectA 依赖它的原因。我找到 this github issue,并将 Serilog.Sink.Http nuget 包添加到 ProjectA。立即解决问题。
我在这样的代码中有一个 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 的 ProjectB。我的记录器实现和 Serilog 包都在 ProjectB 中,这就是 ProjectA 依赖它的原因。我找到 this github issue,并将 Serilog.Sink.Http nuget 包添加到 ProjectA。立即解决问题。