NLog自动重新加载不起作用。

6
我创建了一个简单的窗口应用程序来测试NLog。我在一个while循环中写入所有消息级别(Trace、Debug、Warn和Error)。我设置了autoReload='true'并在NLog配置文件中指定了minlevel="Debug"。这样做可以正常工作并打印所有消息。
我想测试自动重新加载选项,因此在配置文件中手动将minlevel更改为“Warn”,以便在应用程序运行时仅记录警告消息,但是仍然会记录所有消息,而不仅是Warn和Error消息。
但是,如果我重新启动应用程序,它将从配置中获取并打印仅Warn和Error级别的消息。根据链接,根据当前配置更改,NLog应该重新加载配置并开始根据当前配置更改打印日志。我不确定哪里出错了。我是否需要编程重新加载配置呢?请帮忙看一下。以下是我的代码: NLog.config
<?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="Trace" internalLogFile="c:\temp\nlog-internal.log" >

  <targets>

    <target name="FileLogger" xsi:type="File" archiveAboveSize="1048576" fileName="Trace.log" archiveNumbering="DateAndSequence"   />
  </targets>

  <rules>
    <logger name="*" writeTo="FileLogger" minlevel="Debug"  />
  </rules>
</nlog>

日志信息代码片段

private void LogMessages(CancellationToken token)
        {
            try
            {
                while (true)
                {
                    logger.Debug("*********** Debug *************");
                    logger.Trace("----------- Trace --------------");
                    logger.Warn("~~~~~~~~~~~ Warn ~~~~~~~~~~~~~~");
                    logger.Error("========== Error =============");

                    if (token.IsCancellationRequested)
                        break;
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

我怀疑这是由于线程/任务引起的,所以尝试直接从主线程运行,但问题仍然存在。我还尝试启用NLog内部日志记录以查看是否有任何错误,但没有发现任何可疑的内容。


你是如何获取你的“logger”的? - user47589
5
你是在编辑你的项目中的配置文件,还是在bin\Debug或bin\Release目录下的配置文件? - Joe White
2
我正在从项目中进行编辑。这是一个愚蠢的错误。谢谢。当我从发布目录进行编辑时,它可以工作。 - Reuben
1个回答

3

3
谢谢你提供答案。那是我的错,我从项目而不是发布目录进行编辑。无论如何,我不知道GlobalThreshold属性,会去看看。 - Reuben
这没问题,但在生产代码中,如果您想动态更改日志配置,我的答案比修改配置文件更好。 - Jakotheshadows

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接