使用内部日志和管理异常

时间:2015-04-24 14:58:51

标签: c# nlog

使用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");

我的第一个问题是我的Visual输出中没有显示logToconsole。这是正常的吗?

我的第二个问题是当我尝试登录C:\ log.txt(以测试内部日志) 这应该崩溃,因为Nlog无法在C:的根目录下创建文件。 不幸的是它不会崩溃(并且不会创建文件)(例如,它适用于C:\ test \ log.txt)。

这是我的内部Nlog.log内容:

  

2015-04-23 18:44:09.8593 Debug TestManager.Info拒绝邮件   因为过滤器。 2015-04-23 18:44:09.8593调试TestManager.Info   因过滤器而拒绝邮件。 2015-04-23 18:44:09.8593调试   TestManager.Info因过滤器而拒绝邮件。 2015年4月23日   18:44:09.8593调试TestManager.Info由于a拒绝消息   过滤。 2015-04-23 18:44:09.8593跟踪打开C:test.log with   concurrentWrite =假

被拒绝是正常的(我有几个目标)

那为什么我没有例外,没有追踪?

非常感谢您的帮助

1 个答案:

答案 0 :(得分:0)

NLog可能使用传统的Console.WriteLine(…)方法向控制台发送消息。它在WinForms应用程序中不起作用,因为Console.WriteLine(…)默认情况下在WinForms应用程序中不执行任何操作。但是,当您从Visual Studio进行调试时,它才起作用,因为它为Output

提供了一个控制台窗口

尝试在应用程序开头调用Win32 API函数AllocConsole。它应该为您的WinForms应用程序创建一个控制台并启用Console.WriteLine(…)功能。在这里,您可以找到显示如何调用AllocConsole的代码示例。 "See link for setting this up"

在内部记录

上引用Nlog github页面
  

有3个环境变量可以控制内部日志记录。您   可以在运行程序之前设置这些变量以启用内部   日志记录:

     

NLOG_INTERNAL_LOG_TO_CONSOLE - 如果在。中找到此变量   环境,将输出内部诊断信息   控制台

对于您的第二个问题,查看您的日志我相信您没有通过转义反斜杠字符提供正确格式的路径 它应该像

fileName="C:\\logssamplefile.txt"

请注意,这对我有用