![](/img/trans.png)
[英]How is NLog binded to ILogger with Ninject & Ninject.Extensions.Logging
[英]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.