【问题标题】:NLog Configuration system failed to initializeNLog配置系统初始化失败
【发布时间】:2018-01-17 06:26:33
【问题描述】:

我是 Nlog 新手,将 Nlog 配置放在配置部分下方的 app.config 文件中,并在配置部分中定义一个部分名称,但我仍然收到此错误“配置系统无法初始化”。以下是我的 app.config 文件的内容。

<?xml version="1.0"?>
<configuration>
<configSections>
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
        <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/>
    </sectionGroup>
</configSections>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/></startup>
  <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <targets>
      <target name="console" xsi:type="Console"
layout="${date:format=HH\:mm\:ss} ${level:uppercase=true} ${logger} &#xD;&#xA;${message} ${exception:format=message,type,stacktrace}"
                                                        />
    </targets>
    <rules>
      <logger name="*" minlevel="Debug" writeTo="console" />
    </rules>
  </nlog>
</configuration>

我将 nlog 移到 sectionGroup 之外,因为它不是 applicatinSettings 标记的成员。对不起我的错。

【问题讨论】:

    标签: nlog


    【解决方案1】:

    这不是一个很好的答案,但是您是否尝试过打开 NLog 的内部日志记录?

    你可以在配置文件中这样做:

    <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          internalLogLevel="Trace|Debug|Info|Warn|Error|Fatal"
          internalLogFile="NLogInternal.log"
          throwExceptions="true"
          autoReload="true">
    
          <!-- Rest of NLog config stuff goes here -->
    
    </nlog>
    

    您也可以尝试使用单独的 NLog.config 文件,看看是否可行。这种方法(使用 NLog.config)的一个优点是,如果你可以让它工作,你应该能够几乎只需将 NLog.config 的内容复制到 app.config 中(如果你希望拥有 NLog 的配置app.config 文件而不是 NLog.config 文件中的信息)。

    添加:

    你的 NLog 配置中 ${logger}${message} 之间的奇怪字符是怎么回事?他们可能是问题的一部分吗?

    【讨论】:

    • 我设法解决了这个问题,但是当我尝试运行它时没有出现控制台窗口,这是什么问题?因为它是在设置中配置的,所以类型是控制台。
    • 您的应用程序是控制台应用程序吗?如果没有,我认为您不会获得控制台窗口。如果您选择登录到控制台目标,则 NLog 会将输出写入与您的应用相同的控制台窗口。
    • @wageoghe - 我的应用程序是 WPF。有没有办法从控制台窗口出来?或者除了 Console 之外我应该使用什么类型来使 NLog 工作?
    • 您可以登录到文件甚至调试器。在开发过程中记录到调试器很有用,因为您可以在调试时(或在调试器中运行时)看到日志输出。
    【解决方案2】:

    我通过在 Nlog.config 文件中的 NLog 标记中添加以下属性来使其工作:

    throwExceptions="false"

    我还为构建转换问题添加了以下属性: xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"

    【讨论】:

      猜你喜欢
      • 2011-09-20
      • 1970-01-01
      • 2012-04-23
      • 2014-09-28
      • 1970-01-01
      • 2018-03-23
      相关资源
      最近更新 更多