C# windows服务中多个日志文件中info语句的nLog混合

C# windows服务中多个日志文件中info语句的nLog混合,c#,windows-services,nlog,C#,Windows Services,Nlog,我在C#.NET中有一个windows服务项目,其中包含最新版本的.NET framework,我正在尝试在该项目中实现nLog 4.5.11。Windows服务有一个计时器类,它的事件每10秒触发一次。我试图从这些处理程序写入nLog,但它没有打印在日志文件中 windows onstart事件处理程序中的info语句正在写入日志 在internalLogFile.log中进行故障排除后,现在我在其他程序集(如RabbitMQ.log)创建的另一个日志文件中找到了这些nLog信息行。我甚至没有

我在C#.NET中有一个windows服务项目,其中包含最新版本的.NET framework,我正在尝试在该项目中实现nLog 4.5.11。Windows服务有一个计时器类,它的事件每10秒触发一次。我试图从这些处理程序写入nLog,但它没有打印在日志文件中

windows onstart事件处理程序中的info语句正在写入日志

在internalLogFile.log中进行故障排除后,现在我在其他程序集(如RabbitMQ.log)创建的另一个日志文件中找到了这些nLog信息行。我甚至没有在nLog.config中提到它。我不知道nLog为什么要在多个文件中混合内容

添加到windows服务项目的nlog程序集:-

    <?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" internalLogFile="C:\Px\log.txt" internalLogLevel="Info">
  <targets>
    <target name="logconsole" xsi:type="Console" />
    <target name="logfile"
            xsi:type="File"
            fileName="${basedir}/Px_LoaderService-${shortdate}.log" />
  </targets>

  <rules>
    <logger name="docLogger" minlevel="Info" writeTo="logfile" />
    <logger name="*" minlevel="Info" writeTo="logconsole" />
  </rules>
</nlog>

nLog.config文件内容:-

    <?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" internalLogFile="C:\Px\log.txt" internalLogLevel="Info">
  <targets>
    <target name="logconsole" xsi:type="Console" />
    <target name="logfile"
            xsi:type="File"
            fileName="${basedir}/Px_LoaderService-${shortdate}.log" />
  </targets>

  <rules>
    <logger name="docLogger" minlevel="Info" writeTo="logfile" />
    <logger name="*" minlevel="Info" writeTo="logconsole" />
  </rules>
</nlog>

请指出我在哪里犯了错误&这种混合的日志编写正在发生

我在windows服务项目中发现了问题。另一个nlog文件是从项目中的不同程序集引用生成的。这就是为什么一些日志语句被写入不同的日志文件。因为日志是一个静态对象,是在类级别创建的,第二个日志对象是在具有不同类作用域的程序集中创建的。但是log对象的类型是static,这就是导致问题的原因。我会说它的静态对象污染来自两个不同的类


现在我已经确定了问题并解决了

您是否已经毫无疑问地证明计时器确实在启动?是的,您可以连接到windows servicetimer事件处理程序,并且断点运行正常。我可以看到断点每10秒被命中一次。这在线程(和计时器事件处理程序)中应该可以正常工作,我们肯定看不到更多的谜题。我需要在nLog中配置更多吗?请提出建议。内部日志文件说明了什么?可能将internalLogLevel设置为跟踪。也检查