Make the MongoDB docs better! We value your opinion. Share your feedback for a chance to win $100.
Click here >
Docs Menu
Docs Home
/ /

Registrar eventos del controlador

En esta guía, puedes aprender cómo usar la librería PHP para configurar y ajustar el registro. El registro permite recibir información sobre las operaciones en la base de datos, las conexiones al servidor, los errores y otros eventos que ocurren mientras funciona la aplicación.

La librería PHP admite Psr\Log\LoggerInterfaceUna interfaz de registro PSR-3 que configura tu aplicación para recibir mensajes de registro. Puedes registrar una o más instancias de una clase que implemente Psr\Log\LoggerInterface para recibir mensajes de registro. La librería PHP se basa en el driver C de MongoDB y la extensión PHP, por lo que el registrador recibe notificaciones de eventos de cada componente.

Para configurar la aplicación para recibir mensajes sobre los eventos del driver, cree una instancia de una clase de registro que implemente la interfaz Psr\Log\LoggerInterface. Luego, usa la función MongoDB\add_logger() para registrar el logger.

Después de registrar un registrador, la librería PHP genera mensajes de registro que se asemejan 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 nivel debug corresponde a las actividades estándar del controlador. Para ver una lista de posibles niveles, consulte PSR\Log\LogLevel.

  • Mensaje: describe el evento registrado, que indica la creación de un nuevo cliente.

  • Domain string: Especifica el componente del driver que emitió el mensaje del registro. El dominio PHONGO indica que la extensión PHP generó el evento.

Nota

Formato de mensaje de registro

El ejemplo anterior muestra un mensaje de registro almacenado en un arreglo. Sin embargo, el formato de sus mensajes de registro puede diferir dependiendo de su implementación de registro.

Puedes usar Monolog, una librería de registro de PHP, para configurar el registro en tu aplicación. Monolog simplifica la configuración de registros proporcionando una clase Monolog\Logger. Esta clase implementa la interfaz Psr\Log\LoggerInterface y proporciona manejadores que envían los registros a ubicaciones especificadas.

Para utilizar Monolog, instala 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

  • Se utiliza un handler para escribir todos los registros con una gravedad de debug o superior en un archivo llamado mongodb.log en el directorio de tu proyecto

  • Registra el logger

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, crea una clase que implemente la interfaz Psr\Log\LoggerInterface. Puedes 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 cancelar el registro de un logger, pasa tu objeto logger como parámetro a la función MongoDB\remove_logger(). Después de llamar a esta función, tu registrador ya no recibirá mensajes de registro sobre tu aplicación.

El siguiente ejemplo anula el registro de un registrador:

MongoDB\remove_logger($logger);

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

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

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 subyacente de C genera mensajes de registro, consulte Registro en la documentación API libmongoc.

Volver

Flujos de cambio

En esta página