Использование внутреннего журнала и управление исключениями
У меня две проблемы с использованием внутренней регистрации Nlog. Во-первых, при запуске я выполняю следующий код:
LogManager.Configuration = new
NLog.Config.XmlLoggingConfiguration("NLog.debug.config", true);
LogManager.ReconfigExistingLoggers();
InternalLogger.LogToConsole = true;
InternalLogger.LogToConsoleError = true;
InternalLogger.LogLevel = LogLevel.Trace;
LogManager.ThrowExceptions = true;
InternalLogger.LogFile = Path.Combine(ConfigurationManager.AppPath, "Nlog.log");
Моя первая проблема - logToconsole не отображаются в моем визуальном выводе. Это нормально?
Моя вторая проблема - когда я пытаюсь войти в C:\log.txt (для проверки внутреннего журнала). Это должно привести к сбою, потому что Nlog не может создавать файлы в корне C:. К сожалению, он не падает (и не создает файл) (например, работает с C:\test\log.txt).
Вот мой внутренний контент Nlog.log:
2015-04-23 18: 44: 09.8593 Отладка TestManager.Info Отклонение сообщения из-за фильтра. 2015-04-23 18: 44: 09.8593 Отладка TestManager.Info Отклонение сообщения из-за фильтра. 2015-04-23 18: 44: 09.8593 Отладка TestManager.Info Отклонение сообщения из-за фильтра. 2015-04-23 18: 44: 09.8593 Отладка TestManager.Info Отклонение сообщения из-за фильтра. 2015-04-23 18: 44: 09.8593 Открытие трассировки C:test.log с concurrentWrite=False
Отклонено нормально (у меня есть несколько целей)
Так почему я не исключение и никаких следов?
Большое спасибо за входящую помощь
1 ответ
NLog, вероятно, использует обычные Console.WriteLine(…)
Способ отправки сообщений на консоль. Это не будет работать в приложении WinForms, потому что Console.WriteLine(…)
по умолчанию ничего не делает в приложении WinForms. Однако он работает только при отладке из Visual Studio, поскольку это предоставляет окно консоли для Output
Попробуйте вызвать функцию Win32 API AllocConsole
в начале вашей заявки. Он должен создать консоль для вашего приложения WinForms и включить Console.WriteLine(…)
функция. Здесь вы можете найти пример кода, который показывает, как позвонить AllocConsole
, Msgstr "Смотрите ссылку для настройки".
Также цитируя страницу Nlog GitHub по внутренней регистрации
Есть 3 переменные среды, которые управляют внутренней регистрацией. Вы можете установить эти переменные перед запуском вашей программы, чтобы включить внутреннее ведение журнала:
NLOG_INTERNAL_LOG_TO_CONSOLE - если эта переменная найдена в среде, будет выводить внутреннюю диагностическую информацию на консоль
На ваш второй вопрос, глядя на ваши журналы, я полагаю, что вы не указали путь в правильном формате, экранируя символ обратной косой черты.
fileName="C:\\logssamplefile.txt"
Обратите внимание, что это сработало для меня