簡體   English   中英

無法使用 Serilog.Sinks.Http nuget 包在 appsettings 中為 serilog 指定 Http 接收器

[英]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 線程的堆棧跟蹤堆棧跟蹤

更新:啟動項目實際上拋出了一個異常:無法加載文件或程序集“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 項目,它引用了 ProjectB,它是 .net Standard。 我的記錄器實現和 Serilog 包都在 ProjectB 中,這就是 ProjectA 依賴它的原因。 我發現了這個 github 問題,並將 Serilog.Sink.Http nuget 包添加到 ProjectA。 立即解決了問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM