メニュー

デバッグとログ

テーマとプラグインを開発するとき、しばしば デバッグ 情報を表示する必要があります。Grav にはさまざまな種類の機能により、強力にデバッグできます。

デバッグバー

Grav には、 デバッグバー と呼ばれる、デバッグの努力を簡単にしてくれるすばらしいツールがあります。この機能は、デフォルトでは 無効化 されていますが、system.yaml 設定ファイルから有効化できます。すべての環境でも適用できますし、もしくは 開発環境 でのみ適用することもできます。

debugger:
  enabled: true                        # Grav のデバッガと以下の設定を有効化する
  provider: debugbar                   # デバッガに provide を設定する
  shutdown:
    close_connection: true             # onShutdown() 関数が呼ばれる前にコネクションを閉じる。デバッグ中は false にしてください。

[!Info]
最初に有効化したとき、デバッグバーはページの左下に、小さい Grav アイコンとして表示されるかもしれません。クリックすると、デバッグバー全体が表示されます。

PHP デバッグバーは、これまで通り全体的な プロセス時間メモリー使用 を表示しますが、新しくいくつかのタブで、より詳しい情報を提供するようになりました。

最初のタブは、 Messages です。あなたのコードからこのタブに情報が投稿されることで、 Grav の開発時の処理のデバッグに役立ちます。

Request や、 Exceptions そして Configuration 情報とともに、 Timeline パネルでは、 Grav のタイムライン上の詳細な内訳を見ることもできます:

PHP 向けの dump コマンド

PHP をデバッグしているとき、たとえば開発中のカスタムプラグインで、オブジェクトや変数を素早く調べたいときには、パワフルな dump() コマンドを利用できます。この関数には、基本的な PHP 変数であれば何でも渡せて、結果をきれいにフォーマットし、着色してブラウザに表示します。

たとえば、PHP 変数やオブジェクトを簡単に dump できます:

dump($myvariable);

ブラウザでは、次のように結果が表示されます:

次のような構文を利用することで、デバッグバーの Messages タブに変数を dump することもできます:

$this->grav['debugger']->addMessage($myvariable)

Twig 向けの dump コマンド

また、 Twig 変数を Twig テンプレートから表示することもできます。これは、同じように行われますが、結果はデバッグバーの Messages パネルに表示されます。この機能は、デフォルトでは disabled です。しかし、system.yaml config ファイルにより、グローバルに有効化するか、 環境設定 で特定の環境のみで有効化できます:

twig:
  debug: true                        # Enable Twig debugger

たとえば、 Twig 変数やオブジェクトを簡単に dump できます:

{{ dump(page.header) }}

結果を、デバッグバーで確認できます:

同時に複数の dump コマンドを出力することは可能ですが、見分けられず混乱するかもしれません。静的なテキストを次のように追加してください:

{{ dump('page.header output:',page.header) }}
![](twig-dump-text.png)  // 翻訳元でリンク切れ画像です

Twig からブラウザのコンソールに dump

ページが Grav から返ってくる前に変数を表示したい場合や、ページの再読込みが発生しない場合(たとえば AJAX を利用しているような場合)は、他の方法を取ります。JavaScript の1行を使って、変数をブラウザの developper console に表示できます。次のように:

<script> console.log({{ page.header|json_encode|raw }}) </script>

それから、ブラウザのコンソールで値を確認できます:

エラー表示

新しいエラー表示ページでは、詳細情報や、 backtraces 、そして関連するコードブロックまで提供しています。これにより、より早くクリティカルエラーを分離し、特定し、解決することができるようになります。デフォルトの Grav では、有効化されていないため、開発中のエラーハンドリングに役立てるためには、有効化する必要があります:

errors:
  display: true

本番環境では、詳細なエラーページを非表示にして、かわりに、より控えめなエラーページを表示することができます。 user/config/system.yaml ファイルの errors オプションを設定することで可能です。エラーログをファイルに残すこともできます:

errors:
  display: false
  log: true

ログ

情報をログに記録する機能は、しばしば便利ですが、これまで同様、 Grav ではパワフルなログ機能をシンプルな方法で提供します。以下の構文のいずれかを利用してください:

$this->grav['log']->info('My informational message');
$this->grav['log']->notice('My notice message');
$this->grav['log']->debug('My debug message');
$this->grav['log']->warning('My warning message');
$this->grav['log']->error('My error message');
$this->grav['log']->critical('My critical message');
$this->grav['log']->alert('My alert message');
$this->grav['log']->emergency('Emergency, emergency, there is an emergency here!');

すべてのメッセージは、 /logs/grav.log ファイルに追記されます。