2016-08-03 2 views
0

NLog Version 4.3.6NLog старые архивные файлы не удаляются: archiveNumbering = Дата, archiveOldFileOnStartup, maxArchiveFiles

Эта цель создает лог-файл в каталоге журналов в следующем формате Trace_2016-08-03.log файл журнала перемещается при запуске в архив с таким именем, как Trace_2016-08-03_11h33m32s_743ms.log, однако старые архивные файлы не удаляются (maxArchiveFiles = 2). Может ли кто-нибудь помочь мне в этом. Я не могу понять, что я делаю неправильно.

<target name="AsyncTrace" xsi:type="AsyncWrapper"> 
    <target name="TraceFile" xsi:type="File" 
    layout="${time} ${level} ${message} ${exception:format=tostring}" 
    fileName="${localLogHome}/Trace_${shortDate}.log" 
    archiveFileName="${localLogHome}/Archive/Trace_{#}.log" 
    archiveNumbering="Date" 
    archiveDateFormat="yyyy-MM-dd_HH\hmm\mss\s_fff\m\s" 
    archiveOldFileOnStartup="true" 
    maxArchiveFiles="2" 
     /> 
</target> 

Благодарим за любые ответы!

+1

Try, чтобы увидеть эту проблему на GitHub : https://github.com/NLog/NLog/issues/309. Он старый, но, возможно, этот вопрос еще не решен. –

+0

@IgorDamiani эта проблема должна быть решена. Если вы посмотрите на https://github.com/NLog/NLog/issues/643 – FreeG

ответ

0

Есть две проблемы с этой конфигурацией.

  1. Имя файла (из обычного лог-файла) содержит дату. см https://github.com/NLog/NLog/issues/354

  2. архив не признает существующие архивные файлы, когда archiveDateFormat содержит escapechars как в моем примере, так yyyy-MM-dd_HH\hmm\mss\s_fff\m\s был преобразован в yyyy-MM-dd_HH.mm.ss

    <target name="AsyncTrace" xsi:type="AsyncWrapper"> 
        <target name="TraceFile" xsi:type="File" 
         layout="${time} ${level} ${message} ${exception:format=tostring}" 
         fileName="${localLogHome}/Trace.log" 
         archiveFileName="${localLogHome}/Archive/Trace_{#}.log" 
         archiveNumbering="Date" 
         archiveDateFormat="yyyy-MM-dd_HH.mm.ss" 
         archiveOldFileOnStartup="true" 
         maxArchiveFiles="1" 
        />