0

我正在尝试压缩和存档旧日志。为此,我使用了以下目标。

<target name="PluginError" xsi:type="File" 
        layout="${longdate}${message}${exception:format=tostring}" 
        fileName="${basedir}/logs/Plugin/Error/${date:format=yyyy-MM-dd}.log" 
        archiveAboveSize="2000000" 
        archiveNumbering="Rolling" 
        maxArchiveFiles="10"  
        archiveFileName="${basedir}/logs/Plugin/Error/log.{#}.txt"             
        archiveEvery="Day"
        enableArchiveFileCompression="true"/>

但这会在计数超过 3 时删除旧的日志文件,而不是压缩它们并存档它们。我正在使用 NLog dll 版本 4.4.4090.0。我在这里做错了什么?任何帮助将非常感激。

4

2 回答 2

1

您指定的配置将确保:

  • maxArchiveFiles="10" - 存档文件夹中最多 10 个文件。
  • archiveEvery="Day" - 每天一次将当前日志文件移动到存档文件夹。
  • archiveAboveSize="2000000" - 如果当前日志文件超过 2 MB,则将其移动到存档文件夹。
  • archiveNumbering="Rolling" - 将确保最小的数字 (0) 是最新的文件。
  • archiveFileName="${basedir}/logs/Plugin/Error/log.{#}.txt" - 将当前日志文件从log.0.txt重命名为log.9.txt
  • enableArchiveFileCompression="true" - 将使用 ZIP 格式压缩每个单独的文件。考虑将archiveFileName更改为具有 ZIP 扩展名以匹配此决定。

如果它的行为不同,请尝试将archiveEvery更改为Minute。如果存档文件夹中仍然只有 3 个文件,请告知。否则我认为一些计划任务正在清理档案文件夹(或者你有几个 NLog 文件目标指向同一个文件夹?)。

也许还检查错误文件夹中是否有任何与通配符log*.txt匹配的文件

于 2017-03-15T18:42:44.003 回答
0

我想你不见了

enableArchiveFileCompression="true" 

你可以使用这个 nlog 配置它的工作正常http://nlog-project.org/2015/06/09/nlog-4-has-been-released.html

<?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">
  <targets >
   <target name="file" xsi:type="File"
  layout="${longdate} ${logger} ${message}" 
  fileName="${basedir}/logs/logfile.txt" 
  archiveFileName="${basedir}/archives/log.{#}.txt"
  archiveEvery="Day"
  archiveNumbering="Rolling"
  maxArchiveFiles="7"
enableArchiveFileCompression="true" />
  </targets>
  <rules>
    <logger name="*" minlevel="Debug" writeTo="logfile">
    </logger>
  </rules>
</nlog>
于 2017-03-15T04:56:57.397 回答