#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
находиться внутри.
Я вижу множество способов решения этой проблемы, но не могу найти способ их решения.
- Если имя файла уже присутствует в архиве, увеличьте его имя.
- Если имя файла уже присутствует в архиве, добавьте файл.
Поддерживается ли что-либо из этого в настоящее время 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-файл. Вы, конечно, можете создать запрос на удаление для исправления этого.