浜松のWEBシステム開発・スマートフォンアプリ開発・RTK-GNSS関連の開発はお任せください
株式会社シーポイントラボ
TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:静岡県浜松市中区富塚町1933-1 佐鳴湖パークタウンサウス2F

【Laravel】Artisanコマンドのコンソール表示を見やすくする

 ArtisanはLaravelに含まれているコマンドラインインターフェイスです。LaravelにはArtisanで用いるためのコマンドを簡単に書けるようなフレームがそろっており、コンソール画面に表示する文字列の修飾もあります。次のドキュメントの出力の書き出し項によると次の様に書けます。
 Artisanコンソール 6.x Laravel

        $this->info('this is info');
        $this->warn('this is warn');
        $this->error('this is error');
        $this->comment('this is comment');
        $this->question('this is question');

 実行すると次の様になります。

 便利なのですが重要な種別であるERRORが見難いです。環境によって違うのでしょうが自分の環境ではややピンクの背景に灰色文字でとても辛いです。こういった時、自分でコメントの修飾をしたくなります。
 Artisanは実はSymfonyのコンソールのラッパーで、詳しい実装や作りは次のドキュメントにあります。
How to Color and Style the Console Output (Symfony Docs)
 これを元にして、コメントの修飾を作ると例えば次の様にできます。

    protected function myError(string $msg)
    {
// ドキュメントに従ってタグ付け
        $this->line("<fg=red;options=bold,underscore>${msg}</>");
    }

    public function handle()
    {
        $this->info('this is info');
        $this->warn('this is warn');
        $this->error('this is error');
        $this->comment('this is comment');
        $this->question('this is question');
// 追加
        $this->myError('this is my error');
    }


 この修飾が最良かというと微妙な気がしますが、元よりは見やすいと思います。
 実装は次のソースコードでこちらを元にするとドキュメントに書かれていること以上の工夫ができます。
symfony/OutputFormatterStyle.php at 5.0 · symfony/symfony
 あまり深堀してませんがコードの一部やPHPの素な実装までさかのぼるとANSIエスケープシーケンス込みの標準出力を用いているようです。
ANSIエスケープシーケンス チートシート – Qiita

// 多分最終的にこの様な感じ。下は赤色で$msgの中身をコンソール画面に表示します
echo "\033[0;31m$msg\033[0m\n";
  • この記事いいね! (0)