[controlErrorLog] Контроль журнала ошибок
Вот решил поделиться с обществом своим решением для быстрого просмотра журнала ошибок. Полезно при разработке. Но бывает, что и на рабочем сайте решишь вдруг посмотреть этот журнал, а там столько всего понаписано. Вот чтобы ошибки втяхаря не писались и пригодится данное решение.
Как видно из картинки, справа, рядом с именем администратора, появилась иконка. Если журнал содержит ошибки, то отображается восклицательный знак в желтом треугольнике. Если ошибок нет, то отображается галочка в белом кружке.
Чтобы открыть журнал ошибок, кликаем на иконке.
Если журнал слишком большой, то выводится только последние 15 строчек и предлагается скачать его полную версию. Количество последний строчек меняется в настройках.
За все за это отвечает плагин, срабатывающий по событию OnManagerPageBeforeRender.
Индикатор ошибок видят только администраторы с «sudo» и пользователи с правами «error_log_view». Это для того, чтобы обычные редакторы не пужались. Добавлю еще, что для очистки журнала обычным пользователям нужны права «error_log_erase».
По просьбе товарищей сделал в виде компонента для загрузки через менеджер пакетов. Кто не хочет устанавливать пакет, может взять код плагина на Github, но там чуть меньше возможностей.
В версии 1.0.3 появились системные настройки:
Проект на Github.
Как видно из картинки, справа, рядом с именем администратора, появилась иконка. Если журнал содержит ошибки, то отображается восклицательный знак в желтом треугольнике. Если ошибок нет, то отображается галочка в белом кружке.
Чтобы открыть журнал ошибок, кликаем на иконке.
Если журнал слишком большой, то выводится только последние 15 строчек и предлагается скачать его полную версию. Количество последний строчек меняется в настройках.
За все за это отвечает плагин, срабатывающий по событию OnManagerPageBeforeRender.
Индикатор ошибок видят только администраторы с «sudo» и пользователи с правами «error_log_view». Это для того, чтобы обычные редакторы не пужались. Добавлю еще, что для очистки журнала обычным пользователям нужны права «error_log_erase».
По просьбе товарищей сделал в виде компонента для загрузки через менеджер пакетов. Кто не хочет устанавливать пакет, может взять код плагина на Github, но там чуть меньше возможностей.
В версии 1.0.3 появились системные настройки:
- last_lines — Определяет количество последний строчек журнала, если он слишком большой для показа. По-умолчанию, 15.
- auto_refresh — Включает автообновление состояния журнала. Пригодится в случае, если долго не меняется страница в админке, а в журнале появляются ошибки с фронт-энда. Т.е. администратору не нужно открывать журнал, чтобы проверить, есть ли там ошибки.
- refresh_freq — Частота обновления журнала, если включена опция auto_refresh.
Проект на Github.
Поблагодарить автора
Отправить деньги
Комментарии: 39
Добавил в окно с ошибками кнопку «Очистить». Кто уже скопировал код, обновитесь.
Respect
Добавил код на Github, так как здесь он рендерится с ошибками. В 10-й строчке мнемоники пробела заменяются на пробелы.
$log = mb_ereg_replace('\s{4}', ' ',$log);
Поэтому код лучше брать с гитхаба. Отсюда убрал.
мб в симплдрим стор закинешь?
Предлагаешь ваять целый компонент?
П.С. Тут делов-то, скопировал и все.
П.С. Тут делов-то, скопировал и все.
Сергей, а почему бы и не собрать компонент? Есть же простейшие компоненты ради одного сниппета в 5-10 строк.
Скопировать просто, но еще проще установить из MODSTORE.
Кстати, а вдруг ты потом придумаешь какие-то кардинальные улучшения? Значительно упростится обновление у всех :)
Скопировать просто, но еще проще установить из MODSTORE.
Кстати, а вдруг ты потом придумаешь какие-то кардинальные улучшения? Значительно упростится обновление у всех :)
Про обновление согласен, так проще.
Ну если так принято, то могу и собрать пакет.
Ну если так принято, то могу и собрать пакет.
Решил сделать по взрослому, на ExtJs. Теперь это все выглядит как базовый функционал. Описание изменил соответственно.
Просто и элегантно. Не хватает только кнопки обновления лога.
Согласен, не помешала бы.
Подготовил пакет. Отправил в магазин.
Боб Рей подкинул идею — когда файл слишком большой показывать последние строчки. Вот так
Количество строк можно изменить в плагине. Для этого есть переменная $last
Осталась еще одна вещь из моей базы разработки, которую я могу предложить обществу — backup таблиц MySql из админки — выбрал таблицы, нажал Export и получил файл с кодом как в phpMyAdmin. Нужно только причесать и сделать в виде пакета. Хотя может я изобрел велосипед, кто знает?
Количество строк можно изменить в плагине. Для этого есть переменная $last
$last = 10;
Все. На этом думаю хватит. Осталась еще одна вещь из моей базы разработки, которую я могу предложить обществу — backup таблиц MySql из админки — выбрал таблицы, нажал Export и получил файл с кодом как в phpMyAdmin. Нужно только причесать и сделать в виде пакета. Хотя может я изобрел велосипед, кто знает?
Хотя может я изобрел велосипед, кто знает?Не знаю насчет велосипеда, но мне бы пригодилось )
По идее, такой функционал нужен в любом движке. Иногда в особо специфичных случаях нет доступа на сервер, а только в админку, и важно иметь возможность снять бекап. Учитывая (скажу заранее) что иногда бд может «весисть» несколько Гб., и учитывая все моменты безопасности.
Я бы тоже поприветствовал такое дополнение!
Я бы тоже поприветствовал такое дополнение!
Да, вопрос прав доступа очень важен, чтобы редакторы базу не воровали. У меня-то все просто, мне права не нужны. :) Тут еще есть над чем подумать.
Один из методов решения — жестко зашить в код требование атрибута sudo у пользователя, который запускает экспорт базы :)
А может проще назначать права в Modx?
Проще и правильнее.
Вариант судо предложил как экстремальное решение.
Вариант судо предложил как экстремальное решение.
Хороший компонент, только после установки вот такое везде, вместо «Да»:
Было дело. Но вчера я это уже пофиксил. Вы с гитхаба брали? Вам нужно перекачать скрипт и файлы лексиконов.
Вышло обновление 1.0.1-pl. Подробность в заметке.
Огромное спасибо! Поставил компонент с репозитория, всё работает как часы, очень удобно!)))
Рад что пригодилось.
здравствуйте, установил компонент, множество ошибок подобного типа
+ ругается на страницы старого сайта, тогда как сайт, на котором установлен компонент — новый.
те сейчас нужно вычищать все старое из поисковиков? редирект делать не хочу, многое просто уже не нужно
[2015-08-14 01:55:19] (ERROR @ /index.php) Error parsing condition with key 0: ('20150811091856-YIM66.html' REGEXP `modRedirect`.`pattern` OR '20150811091856-YIM66.html' REGEXP CONCAT('^', `modRedirect`.`pattern`, '$'))это он каким то образом ругается на страницы удаленного вируса со старого сайта.
+ ругается на страницы старого сайта, тогда как сайт, на котором установлен компонент — новый.
те сейчас нужно вычищать все старое из поисковиков? редирект делать не хочу, многое просто уже не нужно
Пока что просто очистил журнал и все. Видимо старые записи. Но ошибки заново появляются
Боб Рей написал заметку про мой компонент. Для такого любителя как я это очень приятно. :)
Поздравляю!
Боб классный дядька. Присоединяюсь к поздравлению)
Что-то сломалось в версии 1.0.3, белый экран в админке
2015/08/26 19:22:11 [error] 9099#0: *396068 FastCGI sent in stderr: "PHP message: PHP Fatal error: Can't use function return value in write context in /var/site/www/core/components/controlerrorlog/processors/mgr/errorlog/get.class.php on line 32" while reading response header from upstream, client: *, server: site.ru, request: "GET /manager/?a=workspaces HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-site.sock:", host: "site.ru", referrer: "http://site.ru/manager/?"
Fixed.
П.С. Ошибка возникает на PHP ниже 5.5.
П.С. Ошибка возникает на PHP ниже 5.5.
А это 90% хостингов, если не больше.
Я все свои дополнения заставляю работать на 5.3.
Я все свои дополнения заставляю работать на 5.3.
Доброго дня!
Недавно внес изменения в формирование url — теперь без слешей для ресурсов «контейнер», после этого перестала работать кнопка «очистить» в модальном окне controlErrorLog.
При клике на «очистить» в консоли ошибок в браузере следующее
домен.зона/lsjhk35KYyxZ/ 301 редирект
домен.зона/lsjhk35KYyxZ (failed)
Где то слэш прописан жестко, а где не найду ни как.
Недавно внес изменения в формирование url — теперь без слешей для ресурсов «контейнер», после этого перестала работать кнопка «очистить» в модальном окне controlErrorLog.
При клике на «очистить» в консоли ошибок в браузере следующее
домен.зона/lsjhk35KYyxZ/ 301 редирект
домен.зона/lsjhk35KYyxZ (failed)
Где то слэш прописан жестко, а где не найду ни как.
Привет!
Володь, придётся открыть гараж, чтобы посмотреть, пощупать, понюхать. Так сразу сказать не готов. Запрос на очистку идёт на коннектор MODX
Володь, придётся открыть гараж, чтобы посмотреть, пощупать, понюхать. Так сразу сказать не готов. Запрос на очистку идёт на коннектор MODX
MODx.Ajax.request({
url: MODx.config.connectors_url
, params: {
action: "system/errorlog/clear"
}
В админке открой консоль и набери MODx.config.connectors_url. Есть слэш в конце?
Все так
добавил папку коннекторов в правила вебсервера, куда ранее были внесены директории где slash убирать не нужно.
добавил папку коннекторов в правила вебсервера, куда ранее были внесены директории где slash убирать не нужно.
if ($request_uri ~ ".*/$") {
rewrite ^/((?!moyaadminka|setup|en|zh|lsjhk35KYyxZ).*)/$ /$1 permanent;
}
/// .. и переименовал конечно все, ибо большой секрет :)
Работает. Спасибо!
Интересный глюк: если мы находимся на странице англоязычного (непереведённого на русский) компонента в админке, то controlErrorLog становится английским (кнопки, название окна).
Но как только мы возвращаемся на любое русское дополнение в админке, то язык controlErrorLog становится обратно русским.
То же касается и самопальных дополнений без лексиконов — на их страницах controlErrorLog английский.
controlErrorLog не берёт значение из системной настройки manager_language?
Но как только мы возвращаемся на любое русское дополнение в админке, то язык controlErrorLog становится обратно русским.
То же касается и самопальных дополнений без лексиконов — на их страницах controlErrorLog английский.
controlErrorLog не берёт значение из системной настройки manager_language?
Ты бы хоть в код глянул.
// Заголовок окна
...
title: _("error_log") ? _("error_log") : 'Error log',
...
controlErrorLog не берёт значение из системной настройки manager_language?controlErrorLog пользуется специальной функцией MODX для лексиконов.
Понятно, да, я написал, а потом подумал что надо было в код заглянуть )))
Извини что отвлёк по пустяку.
Извини что отвлёк по пустяку.
Ты бы хоть в код глянул.Я так написал потому, что знаю, что ты разобрался бы без проблем. :)
Отличный плагин, просто незаменимый при отладке. Проблем в его работе не найдено (MODx 3.0.3, PHP 8). Автору искреннее спасибо.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.