NLog журнал ротация / архивирование противоречивое поведение
У меня есть проект, который использует NLog для создания и поддержки файлов журнала. Это включает в себя использование ротации журналов / архивирование старых файлов журналов. Тем не менее, я видел, что настройки архивации NLog не всегда соблюдаются, особенно в отношении параметра конфигурации ArchiveEvery. Основываясь на этом ответе stackru, я предполагаю, что библиотека проверяет время последней записи для файла, чтобы проверить, должен ли он заархивировать текущий файл и запустить новый, но не до тех пор, пока новое сообщение журнала не будет передано в библиотеку.
В моем проекте библиотека настроена на архивирование каждую минуту. Это должно быть хорошо, так как мой проект регистрирует сообщения каждые несколько секунд, и я ожидаю увидеть заархивированный файл каждую минуту, потому что сообщения журнала продолжают поступать. Однако я вижу противоречивое поведение, иногда между несколькими, но в последующем, архивированными файлами журнала. Например, в настоящее время у меня есть следующие файлы на моем диске:
Filename | Last write time
----------------------+------------------
Log.01-06-2017.2.csv | 1-6-2017 10:42
Log.01-06-2017.3.csv | 1-6-2017 10:44
Log.01-06-2017.4.csv | 1-6-2017 10:46
Log.01-06-2017.5.csv | 1-6-2017 10:47
Log.01-06-2017.6.csv | 1-6-2017 10:48
Log.01-06-2017.7.csv | 1-6-2017 10:52
Log.01-06-2017.8.csv | 1-6-2017 11:01
Log.01-06-2017.9.csv | 1-6-2017 11:04
Log.01-06-2017.20.csv | 1-6-2017 11:43
Log.01-06-2017.csv | 1-6-2017 11:46
Как видите, заархивированные файлы создаются не каждую минуту. Что касается моего конфига NLog на данный момент:
fileTarget.ArchiveNumbering = ArchiveNumberingMode.DateAndSequence;
fileTarget.ArchiveEvery = FileArchivePeriod.Minute;
fileTarget.KeepFileOpen = true;
fileTarget.AutoFlush = true;
fileTarget.ArchiveDateFormat = "dd-MM-yyyy";
fileTarget.ArchiveOldFileOnStartup = true;
Я изо всех сил пытаюсь заставить это работать "должным образом". Я пишу это в скобках, так как у меня нет большого опыта работы с NLog и я не знаю, как ведет себя библиотека. Я надеялся найти больше информации на вики-странице NLog на GitHub, но не смог найти там нужную мне информацию.
редактировать
fileTarget.FileName состоит из базовой папки (storage.Folder.FullName = "C:\ProgramData\\"), подпапки (LogFolder = "AuditLog") и имени файла (LogFileName = "Log.csv"):
fileTarget.FileName = Path.Combine(storage.Folder.FullName, Path.Combine(LogFolder, LogFileName));
FileTarget.ArchiveFileName не установлен, поэтому я представляю его по умолчанию. Может ли быть так, что указание полного пути для FileName приводит к ошибкам? Если да, есть ли другой способ указать конкретную папку для размещения файлов журнала?