2016-08-18 5 views
2

У меня есть консольные приложения, которые я написал на работе. Я хотел бы получить NLog в них, но у меня проблемы. Когда я проверяю объект «logger», я вижу в нем свойство «Factory», что в конфигурации были целевые значения = 0, loggingrules = 0, все пусто или не задано. Итак, это не делает ничего .. не отбрасывает внутренний файл журнала ... Я пробовал nLog.config NLog.config и nlog.config ... безрезультатно. Пробовал ver 3 и 4 из NLog тоже ...NLog in .NET 4.5 консольное приложение: не загружается Конфигурация

Почему бы не подобрать конфигурацию?

у меня есть:

  • NLog.config в корне с «Материалы» для построения действия и «Copy Всегда» установить
  • Подтверждены NLog.config копируется в бункер screenshot1

Вот 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" 
     autoReload="true" 
     throwConfigExceptions="true" 
     throwExceptions="true" 
     internalLogLevel="Trace" 
     internalLogFile="c:\temp\NlogInternal.log" 
     internalLogToConsole="true" 
     internalLogToConsoleError="true" 
     internalLogToTrace="true"> 
    <targets> 
    <target xsi:type="Console" name="debugConsole" layout="${message} "/> 
    <target xsi:type="File" name="debugFile" createDirs="true" fileName="c:\temp\testlog.log" layout="${longdate} ${uppercase:${level}} ${message}"/> 
    </targets> 
    <rules> 
    <logger name="*" minlevel="Trace" writeTo="debugConsole"/> 
    <logger name="*" minlevel="Trace" writeTo="debugFile"/>  
    </rules> 
</nlog> 

и, наконец (это не ошибка, но ничего не выводится, поскольку конфигурация является пустой):

private static Logger logger = LogManager.GetCurrentClassLogger(); 
logger.Info("ConsoleApp test log..."); 
+0

У меня нет решения, но ваш файл конфигурации выглядит великолепно. Я заменил содержимое одного из моих конфигурационных файлов (с именем «Nlog.config»), и он работает точно так, как вы ожидали, сбрасывая огромное количество информации на консоль и записывая файл info log .log в соответствии с указаниями. Я также использую тот же метод logger.Info в этом проекте, и у меня установлены одни и те же действия сборки. – Micah

ответ

2

Есть ли у вашего app.config есть NLog configSection? Что-то вроде этого:

<configuration> 
    <configSections> 
    <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog"/> 
    </configSections> 
    <nlog> 
    </nlog> 
</configuration> 
+0

Нет, потому что я использую внешний файл NLog.config. Когда вы используете внешний, вам не нужно прикасаться к app.config в соответствии с https://github.com/nlog/NLog/wiki/Configuration-file#configuration-file-locations –

+0

@Beau, выполните nloger.config IS в корне приложения или в ящике приложения? (например: project/bin/bin) –

+0

В моем объяснении: «Корень приложения с« Копировать всегда »установлен» (так что он также копирует в корзину) –

0

Если даже internalLogger не работает, вы можете отладить проблему, установив InternalLogger.LogWriter

например

// enable internal logging to a custom TextWriter 
    InternalLogger.LogWriter = new StringWriter(); //e.g. TextWriter writer = File.CreateText("C:\\perl.txt")