К содержанию

[logRotation] Ротация файла error.log (журнал ошибок MODX)



Дополнение избавляет от проблемы «разрастания» файла ошибок error.log

Ротация логов

На некоторых сайтах за годы работы скопилось огромное количество записей в журнале ошибок MODX. Файл error.log может «весить» гигабайты.

Дополнение logRotation постоянно проверяет размер этого файла. Как только он превысит максимальный размер, указанный в системных настройках, плагин удалит старые записи и тем самым уменьшит размер файла.

Инструкция

Установите дополнение и в системной настройке logrotation_size укажите желаемый максимальный размер файла.

Дополнение в modstore.pro.
Илья Уткин
Илья Уткин
22 марта 2019, 11:00
modx.pro
5 740
Реклама

Комментарии: 15

Sergey (Sentinel)
Sergey (Sentinel) Проверенный
22 марта 2019, 11:06
Супер, Илья! Спасибо за компонент!
    Василий Наумкин
    Василий Наумкин Администратор
    22 марта 2019, 11:09
    Правильно, всё-таки, проблемы решать — а не просто удалять сообщения о них.
      Илья Уткин
      Илья Уткин Администратор
      22 марта 2019, 11:14
      Безусловно. Я пользуюсь дополнением controlErrorLog — всегда видно, что есть ошибки. Но есть сайты, в админку которых люди не заходят годами — и иногда такие казусы случаются. Даже на modhost очень старые записи в журналах сервера удаляются)
        Николай
        Николай Проверенный
        22 марта 2019, 13:08
        Разве что ошибка 'Error caching lexicon topic lexicon/ru/core/resource' вылезает то и дело даже на чистой установке. И ещё бывают какие-то глюки хостинга, и тогда уже компоненты или движок сыпят ошибки. Короче, чистые логи это походу недостижимый идеал)
        Іван Клімчук
        Іван Клімчук Администратор
        22 марта 2019, 11:31
        Это не совсем ротация получается, а скорее лимитирование по размеру, у нас в ТАО старый логер тоже так умеет, но я бы еще добавил возможность сохранять старые файлы, как это делается в linux. Т.е. после отсечки сохранять файл error.log.1, error.log.2 и так далее, а самые актуальные записи держать в стандартном файле.
          Илья Уткин
          Илья Уткин Администратор
          22 марта 2019, 11:37
          Да, надо подумать, как это реализовать… Но эти файлы error.log.1, error.log.2 и т. д. — они же тоже не до бесконечности должны сохраняться? Есть какой-то стандартный, общепринятый лимит?
            Андрей Степаненко
            22 марта 2019, 11:44
            как в linux в архив старые логи кидать, упакованные все равно копейки весят.
              Іван Клімчук
              Іван Клімчук Администратор
              22 марта 2019, 12:01
              В настройках лимит настраивать, задав по умолчанию значение определенное. Вот например утилита logrotate в linux — www.dmosk.ru/miniinstruktions.php?mini=logrotate-linux
              Николай
              Николай Проверенный
              22 марта 2019, 12:34
              Я вот таким вариантом пользуюсь:

              <?php
              
              if( in_array($modx->event->name, ['OnManagerPageInit','OnBeforeManagerLogin']) ) {
                  $logpath = MODX_CORE_PATH . 'cache/logs/error.log';
                  
                  if( file_exists($logpath) ) {
                      if(filesize($logpath) > 5000000) {
                          $logcontent = file_get_contents($logpath);
                          $filename = 'error-'. date("Y-m-d_H:i:s");
                          
                          $zip = new ZipArchive();
                          $zip->open(MODX_CORE_PATH . 'cache/logs/'. $filename . '.zip', ZipArchive::CREATE);
                          $zip->addFromString($filename . '.txt', $logcontent);
                          $zip->close();        
                          
                          $modx->runProcessor('system/errorlog/clear');
                      }
                  }
              }

                Илья Уткин
                Илья Уткин Администратор
                22 марта 2019, 12:46
                Супер! Спасибо, попробую внедрить эту фишечку)
            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
            15