这不是一个问题,因为它是一个警告,而且有点咆哮。
我有以下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