NLog 3.1.0事件上下文不起作用

时间:2014-10-20 13:06:55

标签: nlog

这不是一个问题,因为它是一个警告,而且有点咆哮。

我有以下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"
  throwExceptions="true">

<!-- 
See https://github.com/nlog/nlog/wiki/Configuration-file 
for information on customizing logging rules and outputs.
 -->
<targets>
  <target xsi:type="File" name="f" fileName="${basedir}/logs/NLog_${shortdate}.log"
        layout="${date} ${uppercase:${level}} ${message}" />
  <target xsi:type="File" name="eventFile" fileName="${basedir}/logs/EventFile_${shortdate}.log"
        layout="${date} ${uppercase:${level}} The answer is ${event-context:item=Universe}" />
</targets>

<rules>
  <logger name="MyLogger" minlevel="Trace" writeTo="f" />
  <logger name="EventLogger" minlevel="Debug" writeTo="eventFile" />
</rules>
</nlog>

我使用以下代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using NLog;
using NLog.Config;
using NLog.Targets;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                Logger eventLogger = LogManager.GetLogger("EventLogger");
                LogEventInfo eventInfo = new LogEventInfo(LogLevel.Debug, "EventLogger", "message");
                eventInfo.Properties["Universe"] = 42;
                eventLogger.Debug(eventInfo);
            }
            catch (Exception ex)
            {
                int a = 1;
            }

            int b = 1;
        }
    }
}

我使用NuGet为此应用程序下载NLog。它给了我NLog版本3.1.0.0。当我运行此应用程序时,将调用异常处理程序,并且内部异常会抱怨字典已被修改,因此无法再枚举。

之前,我从其他来源下载了NLog 3.0.0.0。我在我的应用程序中使用对3.0.0.0版本的引用替换了3.1.0.0引用,并且没有发生异常。

我是NLog的全新用户,这是我发现的第二个严重错误。第一个是如果创建日志级别为“Off”的日志,这是完全合法的,则抛出超出范围异常的索引。这是因为“Off”的日志级别枚举的整数值是6,并且该数字用作仅包含六个元素的数组的索引(因此,其最高索引为5)。

我意识到NLog是一个开源项目,因此没有保证,但鉴于它的受欢迎程度,我原本预计会有比实际情况更好的测试程序。

ROBR

0 个答案:

没有答案