har*_*ang 4 c# windows-services nlog
我有一个用.net 4.0编写的Windows服务,我把它安装在Local System的凭证下.在我使用nlog的代码中,
private static Logger logger = LogManager.GetCurrentClassLogger();
logger.Debug("some information");
Run Code Online (Sandbox Code Playgroud)
我也将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>
Run Code Online (Sandbox Code Playgroud)
但是,如果我启动该服务,我根本看不到日志文件.如果我交换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>
Run Code Online (Sandbox Code Playgroud)
并将我的代码更改为
logger.Trace("some information");
Run Code Online (Sandbox Code Playgroud)
然后它工作.我不确定我的第一组配置有什么问题.
小智 10
UPDATE
<logger name="*" minlevel="Info" maxLevel="Deubg" writeTo="logfile" />
^^^^^
Run Code Online (Sandbox Code Playgroud)
首先:Debug拼错了.
但主要问题是Debug级别在信息级别下.
以下是允许的日志级别(按降序排列):