NLog in .NET 4.5控制台应用程序:未加载配置

时间:2016-08-18 18:13:31

标签: c# console-application nlog

我有一些我在工作中写过的控制台应用程序。我想把NLog带进去,但我遇到了麻烦。 当我检查“记录器”时对象,我在其中看到' Factory'属性,配置有target = 0,loggingrules = 0,一切空白或未设置。 所以,它没有做任何事情..也没有删除内部日志文件......我试过nLog.config NLog.config和nlog.config ......无济于事。试过NLog的第3和第4版......

为什么不拿起配置?

我有:

  • 根目录中的NLog.config,内容为'用于构建操作和'复制始终'设置
  • 确认正在将NLog.config IS复制到bin 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...");

3 个答案:

答案 0 :(得分:3)

您的app.config是否有NLog configSection? 像这样:

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

答案 1 :(得分:1)

如果即使internalLogger无法正常工作,您也可以通过设置来调试问题 InternalLogger.LogWriter

e.g。

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

答案 2 :(得分:0)

我遇到了同样的问题。进行更改时,将文件名路径“ c:\ temp \ testlog.log”更改为 “ c:/temp/testlog.log”,那么它将起作用。希望下面的内容能帮助您解决问题。

<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>