web-dev-qa-db-ja.com

どうすればログを記録できますか(ウォッチドッグ)?

D7では、ウォッチドッグ機能を使用してログを記録するために使用されます。 D8では、それがなくなっているのがわかります。 logging API と呼ばれるものを使用する必要があります。

私がやろうとしていること:

  1. メニュー/ルートを作成しました、mysite.com/logmessage
  2. ユーザーがブラウザでそのURLを開いたときに、delloに "hello"と記録します。

D8のドキュメントに記載されているサービスをどこに登録すればよいですか? sites/defaultフォルダーのservices.ymlファイルにありますか?

コントローラ/モジュールファイルに上記のクラスをロードして、ロギング用の関数を呼び出すことはできますか?または、関数を使用する前に、モジュールで最初にクラスを明示的に拡張する必要がありますか?

1
Rifas Ali

コントローラ/モジュールファイルに上記のクラスをロードして、ロギング用の関数を呼び出すことはできますか?

はい;まあ、「このクラスをロードする」とは、実際にはこのコンテキストで「サービスクラスのインスタンスを取得または注入する」という意味ですが、そうです。

関数を使用する前に、モジュールで最初にクラスを明示的に拡張する必要がありますか?

既存のサービスが提供していない機能が必要な場合を除きます。

非DIコードの使用:

\Drupal::logger('my_module')->info('Info');

DIコードで、サービスを挿入して使用します。

$this->logger->info('Info');
2
Clive

ロギングにはさまざまなタイプがあり、すべて ドキュメントに従って と同じ方法で呼び出されます。

\Drupal::logger('my_module')->alert($message);

\Drupal::logger('my_module')->info($message);

\Drupal::logger('my_module')->debug($message);

モジュール内の任意の場所でこのコードを呼び出すだけです。logmessageをパスとして登録する場合は、my_module.routing.ymlなどを作成する必要があります。

2
Colin Shipton