logo

Автоматическая очистка лог-файлов в ELMA3 и ELMA4

Иногда при работе с системой может возникать проблема стремительно растущих лог-файлов (журналов транзакций). В связи с этим для поддержания высокой производительности системы рекомендуется производить их регулярную очистку.

В версии 4.0.18 реализована возможность автоматически удалять лог-файлы с одновременным их архивированием в формате .zip. Для этого в файле log4net.config, который расположен в папке ...\<Общая папка с файлами системы ELMA>\Web\Config, добавлены следующие настройки:

  • ELMA.Logging.RollingFileAppender — в этой настройке параметр maxDateRollBackups ограничивает количество временных интервалов, за которое сохраняются лог-файлы. Временной интервал можно задать в параметре datePattern. по умолчанию в нём установлено значение yyyyMMdd, которое обозначает один день (24 часа). При этом в параметре maxDateRollBackups по умолчанию установлено значение 30. При таких настройках лог-файлы будут сохраняться за последние 30 дней;
  • ELMA.Logging.ZipRollingFileAppender — эта настройка пакует старые лог-файлы в zip-архив. Параметры настройки аналогичны параметрам EleWise.ELMA.Logging.RollingFileAppender. При этом есть следующие особенности:
    • если создание лог-файлов настроено только по времени или по времени и по размеру, то старые лог-файлы записываются в zip-архив в соответствии с заданным временным интервалом;
    • если создание лог-файлов настроено только по размеру, они не будут архивироваться.

Также в настройку EleWise.ELMA.Diagnostics.Logs.Appenders.DiagnosticsCompleteSessionAppender добавлен параметр clearOlderHours. В нём можно установить количество часов, за которое требуется сохранять завершённые сессии. При сохранении нового файла чистка осуществляется не чаще, чем раз в 10 минут. Если указано значение <= 0, то сессии не чистятся. По умолчанию установлено значение 0.

В настройки диагностики добавлено удаление старых отчётов. Оно осуществляется при сохранении новых отчётов.

Настройка удаления лог-файлов по расписанию

Примечание
Эту настройку используйте для системы версии ниже 4.0.18.

К этой статье приложен файл, который обеспечивает автоматизацию процесса удаления старых лог-файлов системы по расписанию. Файл запускает удаление всех файлов в заданной папке, а также во всех вложенных в неё подпапках. Расположение файла не имеет значения, исключение — сама папка, из которой производится удаление, и вложенные папки.

Операция запускается через командную строку:

ForFiles /p E:\logs\ /s /d -10 /c "cmd /c del /f /q @file"

Параметры командной строки:

ForFiles — выполняет заданные команды для группы файлов, отображает список файлов текущего каталога;

/p E:\logs — путь до папки с лог-файлами;

/s — рекурсивное выполнение программы "Forfiles" во всех подпапках;

/d -10 — выбор файлов, возраст которых старше 10 дней;

"cmd /c del /f /q @file" — команда по умолчанию, где:

cmd /c — запуск командной строки для внутренних команд;

del — команда для удаления одного или нескольких файлов;

/f — принудительное удаление файлов, доступных только для чтения;

/q — отключение запроса на подтверждение при удалении файлов;

@file — возврат имени файла.

Кроме того, дополнительные возможности предоставляет планировщик заданий (Task Scheduler) – компонент Microsoft Windows, с помощью которого можно запланировать запуск скрипта в определённые моменты времени или через заданные временные интервалы. Для приведённого в примере файла оптимальное время работы джоба – 1 раз в сутки.

Задание в планировщике в обязательном порядке должно выполняться от имени пользователя, у которого есть полные права на папку и её содержимое (в идеале — от администратора системы), иначе команда не будет отрабатывать нужную нам операцию.

Прикрепленные файлы