Использование архивов с именем даты вместе с параметром archiveAboveSize

#nlog #.net-4.7

Вопрос:

Использование nlog 4.7.2.11786. То же самое поведение с последней версией — 4.7.10.13013.

Я использую archiveAboveSize для вызова архивирования, когда файл журнала достигает заданного размера. Все журналы за один день должны храниться в одном архиве.

Однако старые данные просто переопределяются внутри архива, когда архивирование происходит несколько раз в день, поскольку это архивирование файлов с одним и тем же именем.

Например, есть файл debugLog_2021-06-07.log . Когда он достигает размера 10 МБ, он сжимается и добавляется в новый файл debugLog_Archive_20210607.zip . После этого zip-файл будет debugLog_2021-06-07.log находиться внутри.

Я вижу множество способов решения этой проблемы, но не могу найти способ их решения.

  1. Если имя файла уже присутствует в архиве, увеличьте его имя.
  2. Если имя файла уже присутствует в архиве, добавьте файл.

Поддерживается ли что-либо из этого в настоящее время NLog?

Моя конфигурация:

 <?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"
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
autoReload="true"
throwExceptions="false"
internalLogLevel="Off" internalLogFile="c:tempnlog-internal.log">

<variable name="myvar" value="myvalue"/>
<variable name="fileDir" value="C:logfolder"/>
<variable name="archiveAboveSize" value="10485760"/> <!-- 10 MB -->
<variable name="maxArchiveFiles" value="10"/>

<targets>
<target xsi:type="File" name="logTarget" 
    fileName="${fileDir}debugLog_${shortdate}.log"
    layout="${longdate} ${level}: ${message}"
    archiveFileName="${fileDir}debugLog_Archive_{######}.zip"
    archiveAboveSize="${archiveAboveSize}"
    archiveNumbering="Date"
    maxArchiveFiles="${maxArchiveFiles}"
    enableArchiveFileCompression="True"
/>
</targets>

<rules>
<logger name="*" minlevel="Debug" writeTo="logTarget" />
</rules>
</nlog>
 

Комментарии:

1. Вы смешиваете режим динамического архива fileName="debugLog_${shortdate}.log" со статическим режимом архива archiveFileName="debugLog_Archive_{######}.zip" . Пожалуйста, выберите один из них. См. также github.com/nlog/NLog/wiki/…

2. Я думаю, что NLog FileTarget не поддерживает добавление нескольких файлов с одного и того же дня в один и тот же zip-файл. Вы, конечно, можете создать запрос на удаление для исправления этого.