Архив журнала Каждые 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).