Docs Menu
Docs Home
/ /

Registrar eventos del controlador

En esta guía, aprenderá a usar la biblioteca PHP para configurar el registro. Este le permite recibir información sobre operaciones de base de datos, conexiones al servidor, errores y otros eventos que ocurren mientras se ejecuta su aplicación.

La biblioteca PHP admite Interfaz Psr\Log\Logger, una interfaz de registro PSR-3 que configura su aplicación para recibir mensajes de registro. Puede registrar una o más instancias de una clase que implemente Psr\Log\LoggerInterface Para recibir mensajes de registro. La biblioteca PHP se basa en el controlador C de MongoDB y la extensión PHP, por lo que el registrador recibe notificaciones de eventos de cada componente.

Para configurar su aplicación para que reciba mensajes sobre eventos del controlador, cree una instancia de una clase de registrador que implemente la interfaz Psr\Log\LoggerInterface. Luego, use la función MongoDB\add_logger() para registrar su registrador.

Después de registrar un registrador, la biblioteca PHP genera mensajes de registro que se parecen al siguiente mensaje de muestra:

[0] => Array
(
[0] => debug
[1] => Created client with hash: ...
[2] => PHONGO
)

El mensaje de registro de muestra incluye la siguiente información:

  • Nivel de registro: Indica la gravedad del mensaje. El debug nivel corresponde a las actividades estándar del conductor. Para ver una lista de los niveles posibles, consulte PSR\Log\LogLevel.

  • Mensaje: Describe el evento registrado, que señala la creación de un nuevo cliente.

  • Cadena de dominio: Especifica el componente del controlador que emitió el mensaje de registro. El dominio PHONGO indica que la extensión PHP generó el evento.

Nota

Formato del mensaje de registro

El ejemplo anterior muestra un mensaje de registro almacenado en una matriz. Sin embargo, el formato de los mensajes de registro puede variar según la implementación del registro.

Puede usar Monolog, una biblioteca de registro de PHP, para configurar el registro en su aplicación. Monolog simplifica la configuración del registro al proporcionar una Monolog\Logger clase. Esta clase implementa la Psr\Log\LoggerInterface interfaz y proporciona controladores que dirigen los registros a ubicaciones específicas.

Para utilizar Monolog, instale el paquete monolog/monolog ejecutando el siguiente comando:

composer require monolog/monolog

Luego, puedes crear un logger definiendo un Monolog\Logger objeto y registrándolo en la librería PHP.

Este ejemplo realiza las siguientes acciones:

  • Crea un registrador Monolog llamado mongodb-logger

  • Utiliza un controlador para escribir todos los registros con una gravedad de debug o superior en un archivo llamado mongodb.log en el directorio de su proyecto

  • Registra el registrador

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);

Para crear un registrador PSR-3 personalizado, cree una clase que implemente la interfaz Psr\Log\LoggerInterface. Puede implementar Psr\Log\LoggerInterface definiendo una clase que extienda la clase Psr\Log\AbstractLogger. AbstractLogger implementa LoggerInterface y un método genérico log(), que recibe mensajes de registro en cada nivel de gravedad.

Este ejemplo realiza las siguientes acciones:

  • Crea una clase de registro llamada MyLogger que extiende la clase AbstractLogger y registra el nivel de registro, la descripción y el dominio de cada evento

  • Crea un objeto MyLogger y registra el registrador

  • Imprime cada mensaje de registro

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);

Para anular el registro de un registrador, pase su objeto de registrador como parámetro a la función MongoDB\remove_logger(). Tras llamar a esta función, el registrador dejará de recibir mensajes de registro sobre su aplicación.

El siguiente ejemplo anula el registro de un registrador:

MongoDB\remove_logger($logger);

Para obtener más información sobre3 los registradores PSR-,3 consulte PSR-: Interfaz del registrador en la documentación de PHP-FIG.

Para obtener más información sobre Monolog, consulte el repositorio de GitHub de Monolog.

Para obtener más información sobre los métodos de la librería PHP tratados en esta guía, consulte la siguiente documentación del API:

  • MongoDB\add_logger()

  • MongoDB\remove_logger()

Para obtener más información sobre cómo el controlador C subyacente genera mensajes de registro, consulte Registro en la libmongoc documentación de la API.

Volver

Flujos de cambio

En esta página