Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net NLog不';不要删除旧的日志文件_.net_Windows Services_Nlog - Fatal编程技术网

.net NLog不';不要删除旧的日志文件

.net NLog不';不要删除旧的日志文件,.net,windows-services,nlog,.net,Windows Services,Nlog,我的Windows服务中有NLog的此配置。要求每天1个文件,最多保存10个文件 <variable name="logPath" value="D:\infra\project\logs"/> <targets> <target xsi:type="AsyncWrapper" name="main.fileAsyncWrapper"> <target xsi:type="RetryingWrapper" name="mai

我的Windows服务中有NLog的此配置。要求每天1个文件,最多保存10个文件

  <variable name="logPath" value="D:\infra\project\logs"/>

  <targets>
    <target xsi:type="AsyncWrapper" name="main.fileAsyncWrapper">
      <target xsi:type="RetryingWrapper" name="main.fileRetryWrapper" retryCount="10" retryDelayMilliseconds="1000">
          <target
              xsi:type="File"
              name="main.file"
              layout="${message}"
              fileName="${logPath}\win-service-${date:format=yyyy-MM-dd}.log"
              archiveFileName=" ${logPath}\archive\service-main-{#}.log"
              archiveNumbering="Rolling"
              maxArchiveFiles="10"
              encoding="utf-8"
              keepFileOpen="true"
              openFileCacheTimeout="30"/>
      </target>
    </target>
  </targets>

  <rules>
    <logger name="*" minlevel="Debug" writeTo="main.fileAsyncWrapper" />
  </rules>

不知何故,旧文件没有被删除(我现在的目录中有12个)。甚至没有创建归档目录。我做错了什么
,我删除了
archiveEvery=“Day”
,它没有得到我想要的结果。但是删除没有使删除生效。

我使用NLog 4.5.5和.NET 4.6.1运行Windows Server。

您的配置对我来说没有任何意义。我想你必须解释你期望你的配置如何工作。您不遵循以下示例的任何原因:

但是,由于您在文件名中配置了
${date:format=yyyy-MM-dd}
,并且没有指定archiveEvery(或archiveAboveSize),因此它将永远不会触发任何存档操作

我建议您按照以下方式配置NLog:

      <target
          xsi:type="File"
          name="main.file"
          layout="${message}"
          fileName="${logPath}\service-main.log"
          archiveFileName="${logPath}\archive\service-main-{#}.log"
          archiveNumbering="Rolling"
          archiveEvery="Day"
          maxArchiveFiles="10"
          encoding="utf-8"
          keepFileOpen="true" />

或者像这样配置NLog(需要NLog 4.5或更新版本):


或者您可以这样配置NLog(支持NLog 4.4或更高版本):



我试了第二个,效果很好。谢谢,我认为问题是配置从一开始就错了。我确实读了很多次文档,但是没有找到你的链接
      <target
          xsi:type="File"
          name="main.file"
          layout="${message}"
          fileName="${logPath}\win-service-${date:format=yyyy-MM-dd}.log"
          maxArchiveFiles="10"
          encoding="utf-8"
          keepFileOpen="true" />
      <target
          xsi:type="File"
          name="main.file"
          layout="${message}"
          fileName="${logPath}/win-service-${date:format=yyyy-MM-dd}.log"
          archiveFileName="${logPath}/win-service-{#}.log"
          archiveDateFormat="yyyy-MM-dd"
          archiveNumbering="Date"
          archiveEvery="Year"
          maxArchiveFiles="10"
          encoding="utf-8"
          keepFileOpen="true" />