我有一个使用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,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'加载类型'System.Web.IHttpModule'。我相信这是因为该项目是.NET Core,但是期望事情仍然可行(否则将是错误,而不是警告)。
我可以找到的例子使用NLog的EventLogInfo,我无法使用它,因为NLog落后于微软的ILogger,后者不知道EventLogInfo是什么。
如何让它实际发送消息而不是静静地吞下日志消息?
答案 0 :(得分:0)
Problem is maybe caused by default Proxy is not supported on NetCore. This causes an internal exception that never trickles back (so cannot be seen in the internal log)
Work-around is to add proxyType="NoProxy"
to the WebService-config:
<target xsi:type="WebService" name="ws" url="http://localhost:8088/api" protocol="HttpPost" encoding="UTF-8" proxyType="NoProxy">
Created PR to improve the default config for NetCore: https://github.com/NLog/NLog/pull/2563