Nlog不会写入Windows服务中的日志文件

时间:2014-08-07 13:42:45

标签: c# windows-services nlog

我有一个用.net 4.0编写的Windows服务,我把它安装在Local System的凭证下。在代码中我使用了nlog,

private static Logger logger = LogManager.GetCurrentClassLogger();
logger.Debug("some information");

我也将nlog.config复制到exe文件所在的同一目录

<?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">
  <targets>
    <target name="logfile" type="File"
            fileName="c:\log\TestService\My.log"
            layout="${longdate}::${logger}::${message}"
            keepFileOpen="false" />
  </targets>

  <rules>
    <logger name="*" minlevel="Info" maxLevel="Deubg" writeTo="logfile" />
  </rules>
</nlog>

但是如果我启动该服务,我根本看不到日志文件。如果我将log.Debug代码交换到Debug.WriteLine并使用我的Visual Studio附加到Windows服务进程进行调试,我可以看到输出窗口有我的调试消息,这意味着我的Windows服务代码是正确的

我的nlog代码有问题吗?

- 更新1 -

我将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">
  <targets>
    <target name="logfile" type="File"
            fileName="c:\log\TestService\My.log"
            layout="${longdate}::${logger}::${message}"
            keepFileOpen="false" />
  </targets>

  <rules>
    <logger name="*" minlevel="Trace" writeTo="logfile" />
  </rules>
</nlog>

并将我的代码更改为

logger.Trace("some information");

然后它的工作原理。我不确定我的第一组配置有什么问题。

1 个答案:

答案 0 :(得分:10)

<强>更新

<logger name="*" minlevel="Info" maxLevel="Deubg" writeTo="logfile" />
                                           ^^^^^

首先:Debug拼写错误。

但主要问题是调试级别在信息级别

以下是允许的日志级别(按降序排列):

  • 致命
  • 错误
  • 警告
  • 信息
  • 调试
  • trace(最详细的信息。)

Link to the nlog documentation