Размер архивного файла превышает указанный размер, archiveAboveSize с NLog - PullRequest
0 голосов
/ 09 января 2020

У меня есть настройка NLog ниже:

<target name="asyncFile" xsi:type="AsyncWrapper" queueLimit="10000" overflowAction="Block">
     <target xsi:type="File"
               fileName="/storage/sdcard0/com.my.app/Logs/${shortdate}.log"
               archiveFileName="/storage/sdcard0/com.my.app/Logs/archived.{#}.log"
               maxArchiveFiles="5"
               archiveDateFormat="yyyy-MM-dd"
               archiveAboveSize="1048576"
               archiveEvery="Day"
               archiveNumbering="DateAndSequence"
               concurrentWrites="true"
               keepFileOpen="false">
       <layout xsi:type="JsonLayout" includeAllProperties="true" excludeProperties="Comma-separated list (string)">
         <attribute name="time" layout="${longdate}" />
         <attribute name="level" layout="${level:upperCase=true}"/>
         <attribute name="message" layout="${message}" />
         <attribute name="exception" layout="${exception}" />
         <attribute name="threadid" layout="${threadid}" />
       </layout>
     </target>
   </target>

Ожидаемое поведение: создается не более 5 архивных файлов, каждый из которых имеет максимальный размер 1 МБ.

archived.1.log
archived.2.log
archived.3.log
archived.4.log
archived.5.log

Фактическое поведение: один архивный файл имеет больше 40 МБ

Есть идеи?

1 Ответ

2 голосов
/ 09 января 2020

Использование ${shortdate} в fileName не поддерживается вместе с archiveFileName.

fileName="/storage/sdcard0/com.my.app/Logs/${shortdate}.log"

Решение 1 (Новый стиль, который работает с NLog версии 4.5 и новее)

    <target xsi:type="File"
           fileName="/storage/sdcard0/com.my.app/Logs/App.${shortdate}.log"
           maxArchiveFiles="5"
           archiveAboveSize="1048576"
           concurrentWrites="true"
           keepFileOpen="false">

Решение 2: (Удалить ${shortdate} из NLog, чтобы он работал как положено):

 <target xsi:type="File"
           fileName="/storage/sdcard0/com.my.app/Logs/ActiveLog.log"
           archiveFileName="/storage/sdcard0/com.my.app/Logs/archived.{#}.log"
           maxArchiveFiles="5"
           archiveDateFormat="yyyy-MM-dd"
           archiveAboveSize="1048576"
           archiveEvery="Day"
           archiveNumbering="DateAndSequence"
           concurrentWrites="true"
           keepFileOpen="false">

См. Также: https://github.com/NLog/NLog/wiki/File-target#archive -old-log-files

Смотрите также: https://github.com/NLog/NLog/wiki/FileTarget-Archive-Examples

...