Join us Sept 17 at .local NYC! Use code WEB50 to save 50% on tickets. Learn more >
MongoDB Event
Docs Menu
Docs Home
/ / /
PHP ライブラリ マニュアル
/

ドライバー イベントのログ

このガイドでは、 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拡張機能がイベントを生成したことを示します。

注意

ログ メッセージの形式

上記の例では、 配列に保存されたログメッセージを示しています。ただし、ログメッセージの形式はログの実装によって異なる場合があります。

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 を実装できます。AbstractLoggerLoggerInterface と汎用の 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リポジトリを参照してください。

このガイドで説明するPHPライブラリ メソッドの詳細については、次のAPIドキュメントを参照してください。

  • MongoDB\add_logger()

  • MongoDB\remove_logger()

基礎のCドライバーがログメッセージを生成する方法の詳細については、 libmongocAPIドキュメントの「 ログ記録 」を参照してください。

戻る

変更ストリーム

項目一覧