Системе конфигурации NLog не удалось инициализировать

#nlog

#nlog

Вопрос:

Я новичок в 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} amp;#xD;amp;#xA;${message} ${exception:format=message,type,stacktrace}"
                                                        />
    </targets>
    <rules>
      <logger name="*" minlevel="Debug" writeTo="console" />
    </rules>
  </nlog>
</configuration>
  

Я переместил nlog за пределы SectionGroup, поскольку он не является членом тега applicatinSettings. Извините, моя ошибка.

Ответ №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} ? Могут ли они быть частью проблемы?

Комментарии:

1. Мне удалось устранить эту проблему, но когда я попытался запустить это, не появилось окно консоли, в чем проблема? поскольку он был настроен в настройках, тип — Консоль.

2. Является ли ваше приложение консольным приложением? Если нет, я не думаю, что вы получите окно консоли. Если вы решите войти в целевую консоль, то NLog запишет выходные данные в то же окно консоли, что и ваше приложение.

3. @ wageoghe — мое приложение является WPF. Есть ли какой-нибудь способ выйти из окна консоли? Или какой тип я должен использовать помимо консоли, чтобы заставить NLog работать?

4. Вы можете войти в файл или даже в отладчик. Ведение журнала в отладчике во время разработки полезно, потому что вы можете видеть результаты ведения журнала во время отладки (или просто при запуске в отладчике).

Ответ №2:

Я заставил его работать, добавив следующие атрибуты к моему тегу NLog в файле Nlog.config:

Throw Exceptions=»false»

Я также включил следующий атрибут для проблемы с преобразованием сборки: xmlns: xdt=»http://schemas.microsoft.com/XML-Document-Transform »