Overview
このガイドでは、 PHPライブラリを使用して ログ を設定および構成する方法を学習できます。ログ記録により、データベース操作、サーバー接続、エラー、およびアプリケーションの実行中に発生するその他のイベントに関する情報を受け取ることができます。
PHPライブラリは、アプリケーションがログメッセージを受信するように構成する PSR- ロガー インターフェースである Psr\Log\LogerInterface3 をサポートしています。 を実装するクラスの 1Psr\Log\LoggerInterface
つ以上のインスタンスを登録して、ログメッセージを受信できます。 PHPライブラリはMongoDB CドライバーとPHP拡張機能の上に構築されているため、ロガーは各コンポーネントからイベント通知を受け取ります。
ログ記録の構成
ドライバー イベントに関するメッセージを受信するようにアプリケーションを構成するには、Psr\Log\LoggerInterface
インターフェースを実装するロガークラスのインスタンスを作成します。次に、MongoDB\add_logger()
関数を使用してロガーを登録します。
ロガーを登録すると、 PHPライブラリは次のサンプルメッセージのようなログメッセージを生成します。
[0] => Array ( [0] => debug [1] => Created client with hash: ... [2] => PHONGO )
サンプルログメッセージには、次の情報が含まれています。
ログ レベル: メッセージの重大度を示します。
debug
レベルは、標準のドライバー アクティビティに対応します。利用可能なレベルのリストについては、 PSR\Log\LogLevel を参照してください。メッセージ: ログに記録されたイベントについて説明します。これは、新しいクライアントの作成をシグナルします。
Domain string:ログメッセージを発行したドライバー コンポーネントを指定します。
PHONGO
ドメインは、 PHP拡張機能がイベントを生成したことを示します。
注意
ログ メッセージの形式
上記の例では、 配列に保存されたログメッセージを示しています。ただし、ログメッセージの形式はログの実装によって異なる場合があります。
MongoDB ロガーを作成する
PHPログ ライブラリである MongoDB を使用して、アプリケーションのログを構成できます。 MongoDB はMonolog\Logger
クラスを提供することでログ構成を簡素化します。このクラスはPsr\Log\LoggerInterface
インターフェースを実装し、指定された場所にログを送信するハンドラーを提供します。
MongoDB を使用するには、次のコマンドを実行中て monolog/monolog
パッケージをインストールします。
composer require monolog/monolog
次に、Monolog\Logger
オブジェクトを定義し、それをPHPライブラリに登録することでロガーを作成できます。
この例では、次のアクションを実行します。
次の MongoDB ロガーを作成します:
mongodb-logger
ハンドラーを使用して、重大度が
debug
以上のすべてのログをプロジェクトディレクトリ内のmongodb.log
というファイルに書込みますロガーを登録する
use Monolog\Handler\StreamHandler; use Monolog\Logger; $logger = new Logger('mongodb-logger'); $logger->pushHandler(new StreamHandler(__DIR__ . '/mongodb.log', Logger::DEBUG)); MongoDB\add_logger($logger);
カスタム ロガーの作成
カスタム PSR-3 ロガーを作成するには、Psr\Log\LoggerInterface
インターフェースを実装するクラスを作成します。Psr\Log\AbstractLogger
クラスを拡張するクラスを定義することで Psr\Log\LoggerInterface
を実装できます。AbstractLogger
は LoggerInterface
と汎用の log()
メソッドを実装し、各重大度レベルでログメッセージを受け取ります。
この例では、次のアクションを実行します。
AbstractLogger
クラスを拡張し、各イベントのログレベル、説明、ドメインを記録するMyLogger
という名前のロガークラスを作成しますMyLogger
オブジェクトを作成し、ロガーを登録します各ログメッセージを出力
class MyLogger extends Psr\Log\AbstractLogger { public array $logs = []; public function log(string $level, string|\Stringable $message, array $context = []): void { $this->logs[] = [$level, $message, $context['domain']]; } } $customLogger = new MyLogger(); MongoDB\add_logger($customLogger); print_r($customLogger->logs);
ロガーを削除する
ロガーの登録を解除するには、ロガーオブジェクトをMongoDB\remove_logger()
関数のパラメーターとして渡します。この関数を呼び出した後、ロガーはアプリケーションに関するログメッセージ を受信しなくなります。
次の例では、ロガーの登録を解除します。
MongoDB\remove_logger($logger);
詳細情報
PSR-3 ロガーの詳細については、 PHP-構成ドキュメントの「 PSR-:3 ロガー インターフェース 」を参照してください。
MongoDB の詳細については、 MongoDB GitHubリポジトリを参照してください。
API ドキュメント
このガイドで説明するPHPライブラリ メソッドの詳細については、次のAPIドキュメントを参照してください。
基礎のCドライバーがログメッセージを生成する方法の詳細については、 libmongoc
APIドキュメントの「 ログ記録 」を参照してください。