Я использую NLog для выполнения некоторых протоколирования, и у меня возникла проблема с архивированием и именами файлов.Создайте файл NLog с текущей датой и временем без его кеширования, сохраняя имя файла архива одинаковым
Я создаю конфигурации протоколирования в коде (я пишу обертку, чтобы выставить некоторые специфические функциональные возможности), и у меня есть FileTarget
объект, созданный с этими параметрами:
this._fileTarget.FileName = "${date:format=yyyy-MM-dd hh.mm.ss}.log";
this._fileTarget.ArchiveAboveSize = Math.Pow(1024, 2) * 5; //5MB
this._fileTarget.ArchiveNumbering = ArchiveNumberingMode.Date;
this._fileTarget.ArchiveEvery = FileArchivePeriod.Day;
this._fileTarget.ArchiveDateFormat = "yyyy-MM-dd hh.mm.ss";
Я не знаю, почему NLog сделал это так, но этот макет имени файла будет создавать новый файл журнала каждую секунду вместо того, чтобы просто использовать имя файла до тех пор, пока не будет достигнут период архива.
Я добавил кэшированную целевую обертку к имени файла как таковые:
this._fileTarget.FileName = "${cached:cached=true:inner=${date:format=yyyy-MM-dd hh.mm.ss}.log}";
Но все, что покупает меня это имя файла, который в настоящее время не меняется, и выглядит следующим образом архивируется
2014-12-03 12.00.00.2014-12-03 12.00.00.log
2014-12-03 12.00.00.2014-12-03 12.10.00.log
etc...
Можно ли сообщать NLog только архивные файлы на основе размера и даты файла и игнорировать нумерацию архивов и форматирование даты? Я пытаюсь создать файлы журналов, чье имя является меткой времени, когда оно было создано, где новые файлы создаются только определенного размера или каждый день.
Edit: Это то, что я пытаюсь для того чтобы достигнуть:
На старте приложения
- Создает файл журнала с именем файла в формате
"yyyy-MM-dd hh.mm.ss".txt
, используя текущий штамп времени (Пример -> «2014-04-29 11: 11: 11.txt») - Приложение регистрируется в этом файле в течение некоторого времени, пока не будет
- Становится слишком большим (в течение определенного предела) или
- архив время истекает (в моем случае, это один день)
- Регистратор затем прекращает запись в файл, созданный в 1. ("2014-04 -29 11.11.11.txt ") и не переименовывает его или иным образом не добавляет к нему последовательные/скользящие числа или форматирование даты.
- Повторите шаги 1-3 до конца времени.
Оставив меня с папкой журнала, который выглядит следующим образом:
Logs
|
|> 2014-12-10 12:50:50.txt (1024 kb)
|> 2014-12-10 12:50:55.txt (1020 kb)
|> 2014-12-10 12:51:01.txt (1024 kb)
|> 2014-12-10 12:51:10.txt (1003 kb)
|> 2014-12-10 12:51:20.txt (400 kb) <-The currently active log file.
Меня временно перевели в другой проект. Когда я вернусь к этому проекту через несколько дней, я попробую это и награду щедростью по мере необходимости. – Brandon
Я не могу заставить NLog распознать рендер.Я создаю свою конфигурацию ведения журнала в коде (без файла конфигурации), и когда я применяю строку Layout к 'FileName' моего' FileTarget', я получаю ArgumentException с 'LayoutRenderer не может быть найден: 'CreationDate'' (я переименовал renderer, очевидно) – Brandon
Я понял, как получить NLog для распознавания моего LayoutRenderer ('ConfigurationItemFactory.Default.LayoutRenderers.RegisterDefinition()'), и теперь он работает, однако этот LayoutRenderer делает то же самое, что просто кеширование имени файла. Имя файла никогда не изменяется при его архивировании. – Brandon