Архив журнала Каждые x Минут

Я хотел бы иметь возможность архивировать журналы с интервалом в 2 минуты вместо 1 минуты, возможно ли это с целевой структурой NLog.config?

Покопавшись, я установил следующие параметры:

archiveEvery = "Minute" maxArchiveFiles = "5"

Ищете параметр или способ сделать archiveEvery="2minutes"

1 ответ

Решение

FileArchivePeriod имеет ограниченное количество вариантов.

 public enum FileArchivePeriod
 {
    /// <summary>
    /// Don't archive based on time.
    /// </summary>
    None,

    /// <summary>
    /// Archive every year.
    /// </summary>
    Year,

    /// <summary>
    /// Archive every month.
    /// </summary>
    Month,

    /// <summary>
    /// Archive daily.
    /// </summary>
    Day,

    /// <summary>
    /// Archive every hour.
    /// </summary>
    Hour,

    /// <summary>
    /// Archive every minute.
    /// </summary>
    Minute
}

Все это имеет отношение formatString что FileTarget Класс использует простой механизм сравнения, чтобы увидеть, должен ли быть создан новый файл.

if (this.ArchiveEvery != FileArchivePeriod.None)
{
    string formatString = GetDateFormatString(string.Empty); //This is different per period type
    string ts = lastWriteTime.ToString(formatString, CultureInfo.InvariantCulture);
    string ts2 = ev.TimeStamp.ToLocalTime().ToString(formatString, CultureInfo.InvariantCulture);

    if (ts != ts2)
    {
        return true;
    }
}

Таким образом, хотя вы определенно можете настроить код в соответствии с вашими требованиями, он не будет делать это "из коробки" (и это простое изменение было бы уродливым, IMO).

Другие вопросы по тегам