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



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

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

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

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

Инструкция

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

Дополнение в modstore.pro.
Илья Уткин
22 марта 2019, 11:00
modx.pro
4
3 772
+18

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

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

          <?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');
                  }
              }
          }

        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        15