Всем привет!

Хочу рассказать про свой небольшой JS-проект, который я склепал “на коленке”, когда мне пришлось с недельку порефакторить чужой большой PHP-проект с невменяемым и неработающим логгером ошибок, а также кучей страшного спагетти кода - ну вы поняли, как это бывает.

Я умею и люблю пользоваться дебаггером XDebug, но мне как-то нехватало чего-то простого, родного для JS-разработчика в чуждом и враждебном ему мире PHP. Ага, точно, браузерной консоли!

В тот момент мне вдруг захотелось иметь возможность грязно и быстро перехватывать все PHP-ошибки (Exception, warning, notice, error) и выводить их куда-нибудь в красивом и удобочитаемом виде. Желательно прямо в браузер.

Так появилась утилита log-my-errors (сокращенно LME, npm: log-my-errors, github: jsmarkus/log-my-errors).

Установка

log-my-errors работает на Node.js и поэтому устанавливается просто:

npm install -g log-my-errors

Или, если надо:

sudo npm install -g log-my-errors

Готово? Теперь введите в консоли:

lme

Запустился сервер удалённой консоли. Что это значит для нас? Для нас это значит, что мы теперь можем зайти в браузере по адресу http://127.0.0.1:7001/ и в появившемся окне увидеть следующее:

Нам надо нажать на кнопку “Get code” и скопировать код.

Вставка кода и перехват ошибок

Теперь берём какой-нибудь “подопытный” PHP проект и вставляем туда скопированный PHP-код, куда-нибудь ближе к началу.

С этого момента мы увидим все возникающие PHP-ошибки в окне браузера, в котором открыт веб-интерфейс log-my-errors.

Вот, примерно, так:

Любую строку можно развернуть, чтобы увидеть подробности (stack trace):

Логгирование

Есть метод LME::log($something), которым можно пользоваться из PHP для вывода значения переменной в консоль LME. Это почти как console.log() в JavaScript. Вот как это выглядит:

Вот пока и всё, что умеет log-my-errors.

Технологии

Делов-то: Node.js, Socket.io, Knockout.js.

В общем

Сейчас я чиню баги, по мере их возникновения. Буду очень рад услышать отзывы, критику и предложения недостающих фич.

comments powered by Disqus