Использование внутреннего журнала и управление исключениями

У меня две проблемы с использованием внутренней регистрации 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"

Обратите внимание, что это сработало для меня

Другие вопросы по тегам