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



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

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

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

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

Инструкция

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

Дополнение в modstore.pro.
Илья Уткин
22 марта 2019, 11:00
4
375
+18
Поблагодарить автора Отправить деньги

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

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

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