PHPのエラーメッセージ及びvar_dumpを見やすく表示するライブラリ「Tracy」の利用方法
ここのところPHPでの開発時にvar_dumpをツールバー表示する「Kint」及びエラーメッセージ画面をリッチにする「PHP Error」ライブラリを使用しているが、どちらの機能も搭載しており尚且つ更新も活発な「Tracy」というライブラリを見つけた。以下に使用方法をメモ。
目次
Tracy
公式サイト
リファレンス
https://tracy.nette.org/en/guide
デモページ
https://nette.github.io/tracy/tracy-exception.html
GitHub
https://github.com/nette/tracy
インストール
composerを利用する場合
サーバにSSH接続し以下コマンドでインストールする。
composer require tracy/tracy
composerを利用しない場合
こちらのページからtracy.pharをダウンロードして適当なディレクトリにアップロードし、以下で読み込む。
require 'tracy.phar';
尚、今回はこちらの方法でインストールした。
利用方法
基本設定
<?php
use Tracy\Debugger;
require 'tracy.phar';
//デバッガーをON(自身の接続IPアドレスを指定)
Debugger::enable('111.222.333.444');
//エラーログの保存場所を絶対パスで指定
Debugger::$logDirectory = __DIR__ . '/log';
//エラーログ設定
Debugger::$logSeverity = E_NOTICE | E_WARNING;
//全てのエラーを表示
#Debugger::$strictMode = true;
//非推奨の通知を除くすべてのエラーを表示
Debugger::$strictMode = E_ALL & ~E_DEPRECATED & ~E_USER_DEPRECATED;
Tracyは開発モードと本番モードがあり、ざっくりと以下の部分が異なる模様。
- 開発モード → エラーメッセージを画面上に表示。エラーログは指定しないと出力されない
- 本番モード → エラーメッセージは画面上に表示しない。エラーログは自動で出力される
開発 or 本番モードは自動検出されるようで「Debugger::enable('111.222.333.444');」部分を自身の接続IPアドレスを指定しないと本番モードとして検出された(デフォルトだとlocalhostのみ開発モードとして検知されるっぽい)。
手動でエラーログを出力
Debugger::log('〇〇エラー発生', Debugger::ERROR);
前述の通り開発モード中にエラーログを出力させたい場合は上記のように記述する必要がある。
var_dumpをツールバーに出力
$arr = [10, 20.2, true, null, 'hello']; //ツールバーにdump bdump($arr);
var_dump関連の詳細についてはこちらのページを参照。
処理時間計測をツールバーに出力
Debugger::timer(); sleep(1); $elapsed = Debugger::timer(); bdump($elapsed); //float(1.0000970363616943)
所感
更新頻度が割と活発
「Kint」及び「PHP Error」ライブラリも特に悪くないんだけど後者の「PHP Error」の方が2012年に作成後アップデート無しだったため、今後いつ使えなくなるか分からないという不安があった。
「Tracy」は最終更新が2023/9/25となっており、更新頻度も割と活発でその辺りは安心できそう。
多機能
今回は最低限必要そうな機能のみ書いたが、リファレンスによるとエラーログをメールで送信できたり、プラグイン機能があったりと多機能なライブラリとなる。
関連記事
-
-
PHPでランダムなカラーコードを生成する「RandomColor.php」ライブラリの利用方法
PHPでランダムなカラーコードを生成したい。自作するとなると「0~9」「a~f」 ...
-
-
PHPで住所や名前のテキストをランダム生成するライブラリFakerPHPの使い方
PHPでランダムなデータを生成したい際に値段や点数等の数値やパスワード等のランダ ...
-
-
PHPでOGPタグ(metaタグ)を簡単に取得できる「OpenGraph.php」の利用方法
PHPでOGPタグ(metaタグ)を取得する際、file_get_content ...
-
-
PHPでExcelシートを出力する方法(PhpSpreadsheet)
PHPでエクセルシートを出力させたい。以前はPHPExcelを利用していたが現在 ...
-
-
PHPで「php-qrcode-detector-decoder」ライブラリを使用してQRコードをデコードする方法
PHPでQRコードの画像をデコードし、値を変数等に格納したい。何とかならないか調 ...