【发布时间】:2018-02-02 09:19:27
【问题描述】:
我使用 NLog 来记录 asmx 服务事件。 web.config 的一部分:
<system.diagnostics>
<trace autoflush="true" />
<sources>
<source name="System.Web.Services.Asmx">
<listeners>
<add name="nlog" type="NLog.NLogTraceListener, NLog" />
</listeners>
</source>
</sources>
<switches>
<add name="System.Web.Services.Asmx" value="All" />
</switches>
</system.diagnostics>
我在我的 nlog.config 中使用 asyncWrapper:
<targets>
<target name="AsyncTarget" xsi:type="AsyncWrapper">
<target xsi:type="File" fileName="//192.168.0.5/Logs/file.log" layout="${message}"/>
</target>
</targets>
<rules>
<logger name="*" writeTo="AsyncTarget"/>
</rules>
所有日志均已成功记录。 10 个请求(同时模拟)大约需要 1 秒。
问题是日志目标IP不可达。那么这10个请求(模拟同时驯服)大约需要10秒。
似乎异步包装器不起作用。
当我在 web.config 中将 NLog.NLogTraceListener 侦听器更改为 System.Diagnostics.TextWriterTraceListener 时,问题就消失了。那么10个请求大约需要1秒(当日志目标IP不可达时)。但我需要使用 NLog。
当我从 web.config 禁用 asmx 日志记录时,问题就消失了,只有在代码中使用 nlog 方法的日志,然后 10 个请求大约需要 1 秒(当日志目标 IP 无法访问时)并且异步包装器工作。但是我需要使用 asmx 源日志。
你有什么想法可以解决这个问题吗?
【问题讨论】:
标签: c# web-services asynchronous asmx nlog