簡體   English   中英

NLog ILogger在登錄到WebServer目標時未發送Web請求

[英]NLog ILogger not sending web request when logging to WebServer target

我有一個使用NLog的項目。 這對於登錄到本地文件非常有用,但是當我嘗試將日志消息定位到WebServer時,似乎什么都沒有發生。

nlog.config的相關部分:

<targets>
    <target xsi:type="WebService" name="ws" url="http://localhost:8088/api" protocol="HttpPost" encoding="UTF-8" >
        <parameter name="Message" type="System.String" layout="${message}" />
    </target>
</targets>

<rules>
    <logger name="QS.WebLogger" minLevel="Info" writeTo="ws" final="true" />
</rules>

然后在我的代碼中:

var loggerFactory = new LoggerFactory().AddNLog();
loggerFactory.ConfigureNLog("nlog.config");
var log = loggerFactory.CreateLogger<QS.WebLogger>();;
log.LogError("error message");

我嘗試了幾種調用LogError的方法,但是無論我嘗試什么,它都會在不引發錯誤的情況下進入LogError,但是我從未見過任何在Fiddler中實際調用Web服務的嘗試。 NLog確實似乎了解應該將其記錄到Web服務,因為它尊重final =“ true”並且不會將這些消息記錄到行下。

我確實在NLog的內部日志中收到以下消息:警告類型加載異常。 異常:System.TypeLoadException:無法從程序集“ System.Web,版本= 4.0.0.0,區域性=中性,PublicKeyToken = b03f5f7f11d50a3a”中加載類型“ System.Web.IHttpModule”。 我認為這是由於該項目是.NET Core,但希望事情仍然可以進行(否則將是錯誤,而不是警告)。

我可以找到的示例使用NLog的EventLogInfo,因為NLog在Microsoft的ILogger(它不知道EventLogInfo是什么)的后面,所以無法使用。

我如何獲得它以實際發送消息而不是默默地吞下日志消息?

問題可能是由於默認情況引起的,NetCore不支持代理。 這將導致一個內部異常,它永遠不會滴答(因此無法在內部日志中看到)

解決方法是將proxyType="NoProxy"添加到WebService-config中:

<target xsi:type="WebService" name="ws" url="http://localhost:8088/api" protocol="HttpPost" encoding="UTF-8" proxyType="NoProxy">

創建PR以改善NetCore的默認配置: https : //github.com/NLog/NLog/pull/2563

暫無
暫無

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

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