NLog - объединение дней хранения и ограничения по размеру - PullRequest
2 голосов
/ 12 марта 2020

ASP. NET CORE Используя NLog, я хочу добиться следующего:


файл журнала в день. Файл максимум 10 МБ. Сохраняйте не более 30 дней журналов, автоматически удаляя старые журналы.


«MaxArchiveFiles» не соответствует требованию этой функции

Как настроить это?

Мои текущие настройки .

<?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"
    autoReload="true"
    internalLogLevel="info"
    internalLogFile="C:\Logs\TestProject\nlog-internal.txt">
    <targets>
    <!-- write logs to file  -->
        <target xsi:type="File" name="ALL"
            fileName="C:\Logs\TestProject\TestProject.log"
            layout="${longdate}|${uppercase:${level}}|${threadid}|${logger}|${message} ${exception}" 
            maxArchiveFiles="100"
            archiveFileName="C:\Logs\TestProject\TestProject.{###}.log"
            archiveAboveSize="10485760"
            archiveNumbering="Sequence"
            concurrentWrites="true"
            keepFileOpen="false"
          />
    </targets>
    <rules>
        <logger name="*" minlevel="Trace" writeTo="ALL" />
    </rules>
</nlog>

1 Ответ

1 голос
/ 12 марта 2020

Это то, что вам нужно? Одно уточнение: 10 МБ слишком мало, я указываю 100 МБ, пожалуйста, измените его, если хотите, в поле archiveAboveSize. например, 100 МБ = 104857600 байт

<?xml version="1.0" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

     <targets>
        <target name="file" xsi:type="File"
            layout="${longdate} ${logger} ${message}${exception:format=ToString}" 
            fileName="${basedir}/logs/${cached:${date:format=yyyy-MM-dd HH_mm_ss}}.log"
            archiveFileName="${basedir}/logs/archive/{#}.log"
            archiveDateFormat="yyyy-MM-dd HH_mm_ss"
            archiveNumbering="DateAndSequence" 
            archiveAboveSize="104857600"
            archiveEvery="Day"
            maxArchiveDays="30" /> 
    </targets>

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