mxLogger

mxlogger

  • By Артур Шевченко
  • Latest release October 16, 2026 (22 days ago)

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

Releases 7 indexed releases

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-&gt;mxl-&gt;info(...) (а также debug/warning/error/<br />
log/process) из любого сниппета/плагина/чанка — без getService(). Реализован<br />
плагином mxLoggerFacade на OnMODXInit (priority -10, чтобы фасад был готов<br />
раньше прочих обработчиков). Сервис вешается на $modx-&gt;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 байт (&lt; 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

—

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.