使用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 =假
被拒绝是正常的(我有几个目标)
那为什么我没有例外,没有追踪?
非常感谢您的帮助
答案 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"
请注意,这对我有用