我使用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源日志。
您对如何解决此问题有任何想法吗?
答案 0 :(得分:1)
解决方法是添加disableFlush-setting:
<add name="nlog" type="NLog.NLogTraceListener, NLog" disableFlush="true" />
NLog 4.4中的当前默认值是准备用脚射击自己的霰弹枪,并将使用NLog 4.5进行更改