mxLogger
mxlogger
About
Удобное логирование процессов в MODX Revolution
At a glance
MODX 3 compatibility unknown. Based on our testing and community reports where available.
- Developer Артур Шевченко
- Latest release October 16, 2026 (22 days ago)
- First seen in SiteDash June 15, 2026 (4 months ago)
- License GPLv2
- MODX support 2.8+
- Databases MySQL
| Changelog | |||
|---|---|---|---|
| modstore.pro |
1.3.2-pl |
October 16, 2026
22 days ago |
|
|
Changelog for mxLogger.<br /><br />
mxLogger 1.3.2 (2026-10-16)<br /> ===========================<br /> - FIX: все привязки плагинов пакета (mxLoggerFacade, mxLoggerMiniShop2, mxLoggerRotate)<br /> к событиям получают priority -10 — логгер идёт первым в цепочке. Раньше<br /> mxLoggerMiniShop2 вставал с priority 0 и мог исполниться после плагина сайта:<br /> modX::invokeEvent() сбрасывает returnedValues перед каждым плагином, а miniShop2<br /> читает их после всей цепочки, поэтому данные плагина сайта на msOnSubmitOrder<br /> (receiver, properties) пропадали.<br /> - Новый резолвер на install и upgrade выставляет -10 и у привязок, которые уже стоят<br /> на сайте, и пересобирает кэш контекстов (eventMap), если что-то поменял.<br /> - Следствие: на msOnBeforeCreateOrder логгер пишет num/cost заказа до правок других<br /> плагинов (например, скидок). Итоговые значения по-прежнему пишутся на msOnCreateOrder.<br /><br /> mxLogger 1.3.1 (2026-09-05)<br /> ===========================<br /> - FIX: политика mxloggerDefault больше не привязана к группе Developers. Резолвер<br /> назначает её только системной группе Administrator (id 1), которая есть в любой<br /> установке MODX. Пакет не должен знать имён рабочих групп конкретного сайта: если<br /> такую группу на сайте переименовали или удалили, назначение молча пропускалось и<br /> права пакета не доставались никому.<br /> - Зафиксирован инвариант: шаблон mxloggerTemplate, права пакета и политика<br /> mxloggerDefault создаются БЕЗУСЛОВНО, до и независимо от назначения группам.<br /> Политика гарантированно есть в БД даже там, где назначать её оказалось некому;<br /> раньше это работало так же, но не было закреплено и легко ломалось при правке.<br /> - Если группа Administrator почему-то не найдена, в лог установки пишется<br /> предупреждение — вместо прежнего молчаливого пропуска.<br /> - Апгрейд с 1.3.0 безопасен: старая ACL-запись для группы Developers (если она на<br /> сайте была) не удаляется и работать не мешает; повторная установка дублей не<br /> создаёт. Группам помимо Administrator политика по-прежнему выдаётся вручную:<br /> Пользователи → Права доступа → группа → Контексты → mgr → mxloggerDefault.<br /><br /> mxLogger 1.3.0 (2026-09-04)<br /> ===========================<br /> - CHANGE: ужесточение доступа. После обновления CMP mxLogger, все mgr-процессоры<br /> и экспорт журнала закрываются для всех, кроме групп Administrator и Developers<br /> (им политика mxloggerDefault назначается при установке автоматически). Прочим<br /> группам, которым нужен доступ, политику mxloggerDefault надо назначить вручную:<br /> Пользователи → Права доступа → группа → Контексты → mgr → mxloggerDefault.<br /> - Права пакета: mxlogger_view (CMP, грид, просмотр записи, список тэгов, экспорт)<br /> и mxlogger_manage (удаление записи, очистка журнала). Объявлены в собственном<br /> шаблоне политики mxloggerTemplate вместе с правом load; политика mxloggerDefault<br /> включает все три.<br /> - Резолвер создаёт шаблон, права и политику и назначает её отдельной ACL-записью<br /> modAccessContext (Administrator → mgr, authority 9999; то же для Developers,<br /> если группа есть). Отдельной записью, а не дописыванием в политику Administrator:<br /> та живёт на AdministratorTemplate и чужих прав не принимает, а несколько политик<br /> на один контекст складываются.<br /> - Проверки прав: checkPermissions() в контроллере CMP, $permission во всех пяти<br /> mgr-процессорах (getlist/get/gettags — mxlogger_view, clear/remove —<br /> mxlogger_manage; у gettags и clear ещё и явный checkPermissions(), так как<br /> базовый modProcessor его не делает), явная проверка в assets/.../export.php.<br /> - У пункта меню mxlogger проставлено permissions=mxlogger_view — в сборке и, на<br /> апгрейде уже установленного сайта, резолвером (vehicle меню существующую запись<br /> не перезаписывает).<br /><br /> mxLogger 1.2.0 (2026-06-22)<br /> ===========================<br /> - Короткий фасад логгера: $modx->mxl->info(...) (а также debug/warning/error/<br /> log/process) из любого сниппета/плагина/чанка — без getService(). Реализован<br /> плагином mxLoggerFacade на OnMODXInit (priority -10, чтобы фасад был готов<br /> раньше прочих обработчиков). Сервис вешается на $modx->mxl; создание дешёвое.<br /><br /> mxLogger 1.1.0 (2026-06-22)<br /> ===========================<br /> - Экспорт журнала из грида с применением текущих фильтров. Кнопка «Экспорт»<br /> в тулбаре (меню Markdown .md / Текст .txt) выгружает ровно те записи, что<br /> видны в гриде: фильтры берутся из тех же параметров и прогоняются через<br /> общий построитель mxLoggerLogFilters (как getlist/clear). Без фильтров —<br /> весь журнал. Выгрузка включает context и trace; порядок хронологический.<br /> - Отдельный потоковый эндпоинт assets/components/mxlogger/export.php (не<br /> процессор: отдаёт файл-attachment, а не JSON). Доступ только авторизованному<br /> менеджеру; выборка батчами и стрим в php://output — журнал любого размера<br /> не держится в памяти. В JS-конфиг добавлен export_url.<br /> - Тулбар журнала разнесён на две строки (фильтры выборки / период + кнопки<br /> действий), элементы выровнены по левому краю.<br /><br /> mxLogger 1.0.2 (2026-06-19)<br /> ===========================<br /> - Селектор тэгов в гриде журнала: пагинация по 10 тэгов на страницу со<br /> стрелками-навигацией (‹ N / M ›) и полем поиска сверху. Решает проблему<br /> слишком длинного списка при большом числе источников/пакетов. Выбор тэгов<br /> и строка поиска сохраняются при листании страниц.<br /> - Cache-busting для CSS/JS менеджера: к подключению добавляется ?v=<br /> файла, чтобы новые версии не залипали в кэше браузера и в объединённом<br /> кэше менеджера (compress_js/compress_css). В сервис добавлен путь<br /> assets_path.<br /><br /> mxLogger 1.0.1 (2026-06-17)<br /> ===========================<br /> - Очистка журнала теперь уважает ВСЕ активные фильтры грида. Раньше при очистке<br /> отбрасывались фильтры «Пользователь/сессия/IP» (ident) и «Поиск по тексту»<br /> (query) — удалялось больше, чем показано в гриде. Также не передавался<br /> tags_match, из-за чего очистка по тэгам шла в режиме any вместо all грида.<br /> - Условия фильтрации вынесены в общий построитель mxLoggerLogFilters — единый<br /> источник правды для выборки (getlist) и очистки (clear), чтобы они не<br /> расходились.<br /> - Если фильтры не заданы, при очистке выводится отдельное предупреждение об<br /> удалении всего журнала.<br /><br /> mxLogger 1.0.0 (2026-06-16)<br /> ===========================<br /> - Фикс charset таблицы логов: при install/upgrade таблица modx_mxlogger_log<br /> приводится к utf8mb4 (ALTER ... CONVERT TO). На серверах, где таблица была<br /> создана в дефолтном latin1, запись кириллицы падала с «1366 Incorrect string<br /> value» (например через плагин ms2: «Корзина очищена»). Резолвер чинит и<br /> существующую таблицу при апгрейде. Безопасно по длине индексов: class<br /> varchar(190)=760 байт (< 767), tags — FULLTEXT.<br /><br /> mxLogger 1.0.0-rc2 (2026-06-15)<br /> ===============================<br /> - Опция skip_classes у log(): классы-прокладки (фасады/обёртки над логгером)<br /> трактуются как внутренние при определении «Источника» — надёжнее жёсткого<br /> skip=N (не зависит от числа кадров обёртки). Поддерживается точное имя класса<br /> или префикс пространства имён (строка, заканчивающаяся на «\»).<br /><br /> mxLogger 1.0.0-rc (2026-06-15)<br /> ==============================<br /> - Первый релиз.<br /> - Сервис-класс mxLogger: log/debug/info/warning/error, скоуп процесса process().<br /> - Мультитэги: одна запись может иметь несколько тэгов (lowercase, [a-z0-9]).<br /> Хранение — CSV-колонка tags с FULLTEXT-индексом; фильтр any/all, режим<br /> mxlogger.tag_filter_mode (auto/fulltext/like) с LIKE-fallback для коротких тэгов.<br /> - Таблица mxlogger_log: tags, process_uid, level, message, context(JSON), class, function, file, line, trace(JSON), user_id, session_id, ip, createdon.<br /> - Автозахват вызывающего кода (class/function/file/line) и стэка с параметрами (объекты сворачиваются в имя класса).<br /> - Режимы захвата: off/caller/full/auto (auto: caller, full для warning/error).<br /> - Whitelist-фильтры записи: по пользователю, группе, сессии, куке.<br /> - Менеджерный интерфейс: грид с фильтрами по тэгу/уровню/процессу/дате/тексту, окно детали, очистка.<br /> - Сниппет mxLogger для вызова из чанков/Fenom.<br /> - События mxlOnBeforeLogSave (до записи — можно отменить/изменить поля) и<br /> mxlOnAfterLogSave (после записи — для уведомлений). Ошибки обработчиков<br /> перехватываются и не ломают логирование.<br /> - standalone.php — просмотр логов в обход MODX (CLI всегда; web по ключу), на<br /> случай, если приложение MODX не грузится. Читает БД напрямую через PDO.<br /> - Плагин mxLoggerMiniShop2 (статичный, код из файла): логирование действий с<br /> корзиной (тэг cart) и оформления заказа (тэг order); сквозной тэг purchase;<br /> события одной воронки объединяются process_uid по сессии. Логируются только<br /> значимые действия (info/error), без debug. Требует установленного miniShop2.<br /> - Авто-определение «Источника»: движок пропускает диспетчерские кадры фреймворка<br /> (*::invokeEvent, mod*::process, include/eval) и указывает реальный метод —<br /> напр. msCartHandler::add вместо бесполезного ::include. |
|||
| modstore.pro |
1.3.1-pl |
September 5, 2026
2 months ago |
— |
| modstore.pro |
1.3.0-pl |
September 4, 2026
2 months ago |
— |
| modstore.pro |
1.2.0-pl |
June 22, 2026
4 months ago |
— |
| modstore.pro |
1.0.2-pl |
June 19, 2026
4 months ago |
— |
| modstore.pro |
1.0.0-rc2 |
June 15, 2026
4 months ago |
— |
| modstore.pro |
1.0.0-pl |
June 16, 2026
4 months ago |
— |
|
No matching releases. |
|||
We've also seen 1 unverified version of mxLogger in use, but don't list those as we've been unable of confirming they are official releases from an official source.