#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 »