【问题标题】:NLog log files not getting compressed but gets deletedNLog 日志文件未压缩但被删除
【发布时间】:2017-08-05 16:24:07
【问题描述】:

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

<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。我在这里做错了什么?任何帮助将不胜感激。

【问题讨论】:

  • 您可以尝试将archiveFileName 更改为.zip 文件吗?还有哪个 .NET 版本?

标签: c# logging nlog nlog-configuration


【解决方案1】:

您指定的配置将确保:

  • ma​​xArchiveFiles="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

匹配的文件

【讨论】:

    【解决方案2】:

    我觉得你不见了

    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>
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-25
    • 2023-03-15
    • 2015-08-15
    相关资源
    最近更新 更多