NLog内存目标错误
NLog memory target error
我在 NLog 中有一个内存目标和一个文件目标,设置如下
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
autoReload="true"
throwExceptions="true"
internalLogLevel="Off" internalLogFile="D:\temp\nlog-internal.log">
<targets>
<target name="logfile" xsi:type="File" fileName="file.txt" />
<target name="memory" xsi:type="Memory" layout="${level}|${time}|${message}"/>
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="logfile" />
<logger name="*" minlevel="Info" writeTo="memory" />
</rules>
</nlog>
我在构造函数中这样获取 MemoryTarget
target = (MemoryTarget)NLog.LogManager.Configuration.FindTargetByName("memory");
之后我访问了目标的日志(仍在构造函数中)并且有几条消息。但是在 N 条消息之后,NLog 停止将任何消息写入内存目标。更重要的是,如果你像我在开始时那样尝试通过名称获取目标 returns null。同样在一段时间后,围绕 nlog 的摆弄与 OutOfMemoryException 一起落下。文件目标虽然工作正常。如何修复 MemoryTarget 不写入日志并自行删除?
UPD:我查看了 NLog 内部调试日志并注意到在某些时候目标被擦除。我有一个带有 NLog 配置的主程序和一个带有另一个配置的 dll。但它们是相同的,不应相互冲突。内部日志在这里 http://pastebin.com/M885xmBi
所以问题基本上是NLog Configs的冲突。我有一个带有 NLog 函数的项目和一个将该项目用作 dll 的 wpf 应用程序。即使他们的配置相同 NLog 读取第一个配置并设置目标,然后它读取第二个配置但显然失败了(我不知道,NLog 内部日志中没有异常)并删除了所有目标。从 dll 项目中删除配置修复了问题
我在 NLog 中有一个内存目标和一个文件目标,设置如下
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
autoReload="true"
throwExceptions="true"
internalLogLevel="Off" internalLogFile="D:\temp\nlog-internal.log">
<targets>
<target name="logfile" xsi:type="File" fileName="file.txt" />
<target name="memory" xsi:type="Memory" layout="${level}|${time}|${message}"/>
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="logfile" />
<logger name="*" minlevel="Info" writeTo="memory" />
</rules>
</nlog>
我在构造函数中这样获取 MemoryTarget
target = (MemoryTarget)NLog.LogManager.Configuration.FindTargetByName("memory");
之后我访问了目标的日志(仍在构造函数中)并且有几条消息。但是在 N 条消息之后,NLog 停止将任何消息写入内存目标。更重要的是,如果你像我在开始时那样尝试通过名称获取目标 returns null。同样在一段时间后,围绕 nlog 的摆弄与 OutOfMemoryException 一起落下。文件目标虽然工作正常。如何修复 MemoryTarget 不写入日志并自行删除?
UPD:我查看了 NLog 内部调试日志并注意到在某些时候目标被擦除。我有一个带有 NLog 配置的主程序和一个带有另一个配置的 dll。但它们是相同的,不应相互冲突。内部日志在这里 http://pastebin.com/M885xmBi
所以问题基本上是NLog Configs的冲突。我有一个带有 NLog 函数的项目和一个将该项目用作 dll 的 wpf 应用程序。即使他们的配置相同 NLog 读取第一个配置并设置目标,然后它读取第二个配置但显然失败了(我不知道,NLog 内部日志中没有异常)并删除了所有目标。从 dll 项目中删除配置修复了问题