为什么 NLogTraceListener 忽略 nlog 异步包装器?
Why NLogTraceListener ignores nlog async wrapper?
我使用 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。
当我在代码中仅使用 nlog 方法从 web.config 日志禁用 asmx 日志记录时,问题就消失了,然后 10 个请求大约需要 1 秒(当日志目标 IP 不可访问时)并且异步包装器工作。但是我需要使用asmx源码日志。
你有什么办法解决这个问题吗?
解决方法是添加 disableFlush 设置:
<add name="nlog" type="NLog.NLogTraceListener, NLog" disableFlush="true" />
NLog 4.4 中的当前默认值是准备射击自己脚的霰弹枪,并将随 NLog 4.5 更改
我使用 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。
当我在代码中仅使用 nlog 方法从 web.config 日志禁用 asmx 日志记录时,问题就消失了,然后 10 个请求大约需要 1 秒(当日志目标 IP 不可访问时)并且异步包装器工作。但是我需要使用asmx源码日志。
你有什么办法解决这个问题吗?
解决方法是添加 disableFlush 设置:
<add name="nlog" type="NLog.NLogTraceListener, NLog" disableFlush="true" />
NLog 4.4 中的当前默认值是准备射击自己脚的霰弹枪,并将随 NLog 4.5 更改