Улучшенный дебаг с помощью Whoops
Whoops — это такая классная библиотека, которая в красивом виде показывает, когда возникла какая-нибудь ошибка.
Плюсы много в чём, сразу в удобном и красивом виде видно контекст строки, где произошла ошибка, точно так же можно прогуляться по стеку (слева), и справа каждый раз будет показан верный контекст. Очень удобно!
Снизу всякие переменные текущие показаны, в общем классная штука. Кстати как плюс, я теперь смог отключить xdebug, что очень сильно ускорило мой локальный PHP. Не факт, что здесь я поступил правильно, но моё дело поделиться с вами идеей.
Установить whoops просто:
composer require filp/whoops
, или прочитайте альтернативные варианты на их сайте или их гитхабе.
Проблема в том, что если его установить и активировать
|
1 2 3 |
$whoops = new \Whoops\Run(); $whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler); $whoops->register(); |
, то логи ошибок перестанут писаться в другие места, в стандартный лог пхп. А это недопустимо.
Давайте починим, чтобы логи не только красиво показывались, но и писались во все места.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
init_whoops(); function init_whoops() { global $whoops; $whoops = new \Whoops\Run(); $whoops_pretty_page_handler = new \Whoops\Handler\PrettyPageHandler(); $whoops_pretty_page_handler->setEditor('sublime'); $whoops->pushHandler($whoops_pretty_page_handler); $monolog_multiline_formatter = new \Monolog\Formatter\LineFormatter(null, null, true); $monolog_error_log_handler = new \Monolog\Handler\ErrorLogHandler(); $monolog_error_log_handler->setFormatter($monolog_multiline_formatter); $monolog_logger_error_log = new \Monolog\Logger('whoops_logger', [$monolog_error_log_handler]); $whoops_plain_text_handler = new \Whoops\Handler\PlainTextHandler(); $whoops_plain_text_handler->loggerOnly(true); $whoops_plain_text_handler->setLogger($monolog_logger_error_log); $whoops->pushHandler($whoops_plain_text_handler); $monolog_browser_console_handler = new \Monolog\Handler\BrowserConsoleHandler(); $monolog_browser_console_handler->setFormatter($monolog_multiline_formatter); $monolog_browser_console_logger = new \Monolog\Logger('whoops_browser_console_logger', [$monolog_browser_console_handler]); $whoops_plain_text_handler2 = new \Whoops\Handler\PlainTextHandler(); $whoops_plain_text_handler2->loggerOnly(true); $whoops_plain_text_handler2->setLogger($monolog_browser_console_logger); $whoops->pushHandler($whoops_plain_text_handler2); $whoops->register(); } |
Здесь у нас логи будут показываться красиво, писаться в пхп еррор лог, и даже выводиться в браузере в консоли.
Ура!
Альтернативы
На самом деле, есть такая альтернатива: https://github.com/Rarst/wps
Плагин не только сам включит поддержку whoops для фронтенда, но и для json и ajax. Я попробовал, но пришёл к выводу, что мне это не подходит. Например, ошибки в формате json мне мешают. Стандартный PrettyPageHandler делает красивый plain text комментарий в начале своей страницы, его удобно читать в аутпуте json:
Да и дорабатывать его нельзя, ошибки в лог точно так же не пишутся.
И отчёты об ajax ошибках в Query Monitor он точно так же ломает.
Минусы Whoops
Я пока знаю только один минус. По умолчанию, Query Monitor покажет ajax ошибку в своём интерфейсе, а с включенным whoops не покажет. Но ничего страшного, эта ошибка надёжно сохранена в еррор логе пхп.
Не минус но недочёт: я пока так и не смог принимать ссылки subl://, чтобы по ссылке в сообщении об ошибке я сразу мог открыть саблайм на нужном месте. Сейчас нужно выделить, Ctrl+C, Alt+Tab, Ctrl+P, Ctrl+V, :номер_строки, Enter. Тоже очень-очень быстро, но не быстрее, чем 1 клик.
Рекомендую Whoops! Ошибки в пхп для крутых пацанов ;)


Обсуждение
http://terios2.ru/forums/index.php?autocom=gallery&req=si&img=4457
Very good https://is.gd/tpjNyL
Having trouble logging into pakgame? pakgamelogin might have some solutions, brb i’m logging with pakgamelogin.
Looking to partner up with Nesine? Nesinepartner is probably where you start to build your business with promotion codes and stuff, I recommend you to take a look: nesinepartner
Man, having the S666app8 on my phone is a game-changer. Quick access to all my favorite games, wherever I am. Download it here: s666app8.
Heard about Fortunetigerapp, and it does not hold back. It’s nice playing on the go with this app. Get it here: fortunetigerapp.
Spinning the reels on 777win66 tonight. Fingers crossed for that lucky 7! Anyone else playing there? I am feeling lucky, check it out 777win66.
I tried lucky57gamedownload site for quick downloads. I downloaded a game and everything went smoothly! Here’s direct access: lucky57gamedownload
Just checking out rumislotsgame – thinking about spinning some virtual reels later. Anybody had any luck there? Gotta love a good slots session! Get spinning with rumislotsgame!
Logging into joygamelogin was pretty straightforward. Nice and simple. No problems there! See for yourself: joygamelogin
phtaya10 https://www.phtaya10y.com
Jilifish Online Casino Philippines: Best Slot Games, Jilifish Login, Register, and App Download. Experience the best Jilifish slot games at Jilifish Online Casino Philippines. Secure Jilifish login, quick register, and Jilifish app download. Play and win now! visit: jilifish
MMlive App, so you want to use MMLive on your on the go? Give this link a look: mmlive app
Anyone sideloading their sports? Thinking about grabbing the selcuksportshd apk. Is it worth the hassle? Spill the tea!
The slotvip app is pretty convenient. I can play on the go, which is perfect for killing time. Recommend downloading it! slotvip app