C#平台NLog日志模块,maxArchiveFiles配置后,不能控制文件数量


type="File" name="info"
            layout="${logLayout}"
            fileName="${logDir}/info/${logFileName}"
            archiveFileName="${logDir}/info/${logArchiveFileName}"
            archiveAboveSize="10485760"
            archiveNumbering="Sequence"
            maxArchiveFiles="1"
            concurrentWrites="true"
            keepFileOpen="true"
            openFileCacheTimeout="30"
            encoding="UTF-8" />

上述代码,是C#平台NLog的日志模块的配置,我设置了maxArchiveFiles="1",但是不起作用,还是控制不了日志文件数量,希望得到指教

NLog的maxArchiveFiles属性是用来指定日志文件保留的最大数量,超过这个数量后,旧的日志文件将被删除。在您的配置中,您设置了maxArchiveFiles="1",这应该限制保留的日志文件数量为1个,但是您仍然无法控制文件数量。

有可能是您设置的日志文件名称中不包含日期信息,因此,NLog无法识别不同日期的日志文件。您可以尝试在文件名中添加日期格式化参数,例如${date:format=yyyyMMdd},这将在文件名中添加当前日期的8位数字格式。

例如,您的配置可以改成以下形式,其中${date:format=yyyyMMdd}将添加当前日期的8位数字格式:


<target xsi:type="File" name="info"
    layout="${logLayout}"
    fileName="${logDir}/info/${logFileName}.${date:format=yyyyMMdd}"
    archiveFileName="${logDir}/info/${logArchiveFileName}.${date:format=yyyyMMdd}"
    archiveAboveSize="10485760"
    archiveNumbering="Sequence"
    maxArchiveFiles="1"
    concurrentWrites="true"
    keepFileOpen="true"
    openFileCacheTimeout="30"
    encoding="UTF-8" />

这样基本就可以解决了,如果这样仍然不行,可以检查一下您的日志文件的文件名和路径是否正确,以及是否有其他地方的配置覆盖了您的设置。

望采纳。