Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Registrar eventos del controlador

En esta guía, puedes aprender cómo configurar y ajustar un registrador en el controlador Kotlin Sync.

Esta guía muestra cómo registrar eventos en el driver. Si quieres aprender cómo usar la información sobre la actividad del driver en el código, consulta el Guía Supervisar eventos de la aplicación.

El controlador Kotlin Sync utiliza Simple Logging Facade For Java (SLF4J) para permitirte especificar el marco de registro de tu elección. Para más información sobre SLF4J, ver el SLF4Documentación J.

Configurar un registrador es opcional. Para configurar un registrador, debes incluir lo siguiente en tu proyecto:

  • La slf4j-api artefacto en su classpath

  • Un framework de registro

  • Un vínculo que conecta el artefacto slf4j-api a un framework de registros

Si el driver no puede encontrar el artefacto slf4j-api en tu classpath, el driver muestra la siguiente advertencia y desactiva todo el registro posterior:

WARNING: SLF4J not found on the classpath. Logging is disabled for the 'org.mongodb.driver' component

El siguiente ejemplo muestra cómo configurar un registrador. Selecciona el Logback o Log4j2 pestaña para ver la sintaxis correspondiente:

Selecciona la pestaña Maven o Gradle para aprender cómo configurar Logback con la herramienta de gestión de dependencias de tu proyecto:

Agrega la siguiente dependencia a tu archivo pom.xml.

<dependencies>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.11</version>
</dependency>
</dependencies>

Agrega la siguiente dependencia a tu archivo build.gradle.

dependencies {
implementation 'ch.qos.logback:logback-classic:1.2.11'
}

Una vez que haya incluido la dependencia anterior, conéctese a su instancia de MongoDB y recupere un documento con el siguiente código:

val mongoClient = MongoClient.create(<connection uri>);
val database = mongoClient.getDatabase(<database>);
val collection = database.getCollection<Document>(<collection>);
collection.find().first();

El código anterior generará un mensaje similar al siguiente:

...
12:14:55.833 [main] DEBUG org.mongodb.driver.connection - Checkout started for connection to <MongoDB hostname>
12:14:55.834 [main] DEBUG org.mongodb.driver.connection - Connection created: address=<MongoDB hostname>, driver-generated ID=3
12:14:55.836 [main] DEBUG org.mongodb.driver.connection - Connection ready: address=<MongoDB hostname>, driver-generated ID=3, established in=4 ms
12:14:55.843 [main] DEBUG org.mongodb.driver.connection - Connection checked out: address=<MongoDB hostname>, driver-generated ID=3, duration=9 ms

Nota

Nivel de registro por defecto

El nivel de registro por defecto de Logback es DEBUG. Para aprender a cambiar el nivel de registro del logger Logback, consulta la sección Configurar nivel de registro de esta página.

Selecciona la pestaña Maven o Gradle para aprender a configurar Log4j2 con la herramienta de gestión de dependencias del proyecto.

Agrega la siguiente dependencia a tu archivo pom.xml.

<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.17.1</version>
</dependency>
</dependencies>

Agrega la siguiente dependencia a tu archivo build.gradle.

dependencies {
implementation 'org.apache.logging.log4j:log4j-slf4j-impl:2.17.1'
}

Una vez que hayas incluido la dependencia anterior, registra un registro de error usando el siguiente código:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
...
val logger = LoggerFactory.getLogger("MyApp");
logger.error("Logging an Error");

El código anterior generará un mensaje similar al siguiente:

12:35:00.438 [main] ERROR <my package path> - Logging an Error

Nota

Nivel de registro por defecto

El nivel de registro por defecto de Log4J2 es ERROR. Esto significa que ejecutar operaciones estándar en el controlador de sincronización de Kotlin no producirá salida de Log4J2 sin configuración. Para aprender cómo cambiar el nivel de registro de tu logger Log4J2, consulta la sección Configuración del nivel de registro de esta página.

Puedes configurar el nivel de registro de tu logger utilizando el sistema de configuración del marco de registro vinculado a SLF4J. El nivel de registro especifica un límite inferior para cuán urgente debe ser un mensaje para que el registrador lo saque como salida.

El siguiente ejemplo configura el nivel de registro en INFO. Seleccione la pestaña Logback o Log4j2 para ver la sintaxis correspondiente:

Especifique las configuraciones de Logback en un archivo llamado logback.xml. Debe poder acceder a este archivo desde su classpath.

El framework Logback define los siguientes niveles de registros, ordenados de más urgente a menos urgente:

  • ERROR

  • WARN

  • INFO

  • DEBUG

  • TRACE

Establece tu archivo logback.xml como el siguiente:

<configuration>
<appender name="CONSOLE"
class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>
%-4relative [%thread] %-5level %logger{30} - %msg%n
</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="CONSOLE" />
</root>
</configuration>

Para comprobar que la configuración del logger fue exitosa, ejecuta el siguiente código:

val mongoClient = MongoClient.create(<connection uri>);
val database = mongoClient.getDatabase(<database>);
val collection = database.getCollection<Document>(<collection>);
collection.find().first();

Este código produce una salida que se asemeja a lo siguiente:

...
317 [main] INFO org.mongodb.driver.client - MongoClient with metadata {"driver": {"name": "<driver-name>", "version": "<driver-version>"}, "os": {"type": "<os-type>", "name": "<os-name>", "architecture": "<architecture>", "version": "<os-version>"}, "platform": "<platform-info>"} created with settings <MongoClientSettings>
345 [cluster-ClusterId{value='<cluster-id>', description='null'}-<MongoDB hostname>] INFO org.mongodb.driver.cluster - Monitor thread successfully connected to server with description ServerDescription{address=<MongoDB hostname>, type=<server-type>, cryptd=false, state=CONNECTED, ok=true, minWireVersion=0, maxWireVersion=<max-wire-version>, maxDocumentSize=16777216, logicalSessionTimeoutMinutes=30, roundTripTimeNanos=<round-trip-nanos>, minRoundTripTimeNanos=<min-round-trip-nanos}

Especifique las configuraciones de Log4j2 en un archivo llamado log4j2.xml Debe poder acceder a este archivo desde su classpath.

El marco Log4j2 define los siguientes niveles de registro, ordenados del más urgente al menos urgente:

  • FATAL

  • ERROR

  • WARN

  • INFO

  • DEBUG

  • TRACE

  • ALL

Establece tu archivo log4j2.xml como el siguiente:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Root level="INFO">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>

Para comprobar que la configuración del logger fue exitosa, ejecuta el siguiente código:

val mongoClient = MongoClient.create(<connection uri>);
val database = mongoClient.getDatabase(<database>);
val collection = database.getCollection<Document>(<collection>);
collection.find().first();

Este código produce una salida que se asemeja a lo siguiente:

...
21:19:25.696 [main] INFO org.mongodb.driver.client - MongoClient with metadata {"driver": {"name": "<driver-name>", "version": "<driver-version>"}, "os": {"type": "<os-type>", "name": "<os-name>", "architecture": "<architecture>", "version": "<os-version>"}, "platform": "<platform-info>"} created with settings <MongoClientSettings>
21:19:25.710 [cluster-ClusterId{value='<cluster-id>', description='null'}-<MongoDB hostname>] INFO org.mongodb.driver.cluster - Monitor thread successfully connected to server with description ServerDescription{address=<MongoDB hostname>, type=<server-type>, cryptd=false, state=CONNECTED, ok=true, minWireVersion=0, maxWireVersion=<max-wire-version>, maxDocumentSize=16777216, logicalSessionTimeoutMinutes=30, roundTripTimeNanos=<round-trip-nanos>, minRoundTripTimeNanos=<min-round-trip-nanos}

Su registrador utiliza nombres de registrador para organizar los diferentes eventos de registro. Los nombres de registrador son cadenas que forman una jerarquía. Un registrador es ancestro de otro si su nombre seguido de "." prefija el nombre del otro. Por ejemplo, "grandparent" es ancestro de "grandparent.parent", que a su vez es ancestro de "grandparent.parent.child". Un registrador hereda las propiedades de su ancestro y también puede definir sus propias propiedades.

El controlador de Synchronization de Kotlin define los siguientes nombres de registrador para organizar diferentes eventos de registro:

Nombre del registrador
Descripción

org.mongodb.driver.authenticator

Registra eventos de autenticación

org.mongodb.driver.client

Registra eventos relacionados con instancias de MongoClient

org.mongodb.driver.cluster

Registra eventos relacionados con la supervisión de las implementaciones de MongoDB

org.mongodb.driver.connection

Registra conexiones y pool de conexiones

org.mongodb.driver.connection.tls

Registra eventos TLS

org.mongodb.driver.operation

Registra operaciones, incluyendo registros relacionados con reintentos automáticos

org.mongodb.driver.protocol

Registra los comandos enviados y las respuestas recibidas de las implementaciones de MongoDB

org.mongodb.driver.uri

Registra eventos de análisis de cadenas de conexión

org.mongodb.driver.management

Registra eventos de Java Management Extensions (JMX)

El siguiente ejemplo desactiva el registrador raíz y establece el nivel de registro para el registrador org.mongodb.driver.connection en DEBUG. Esto hará que el driver registre solo mensajes relacionados con conexiones y pool de conexiones en el nivel DEBUG o superior. Selecciona la pestaña Logback o Log4j2 para ver la sintaxis correspondiente:

Establece tu archivo logback.xml como el siguiente:

<configuration>
<appender name="CONSOLE"
class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>
%-4relative [%thread] %-5level %logger{30} - %msg%n
</pattern>
</encoder>
</appender>
<logger name="org.mongodb.driver.connection" level="DEBUG" additivity="true"/>
<root level="OFF">
<appender-ref ref="CONSOLE" />
</root>
</configuration>

Para probar que la configuración del registrador fue exitosa, ejecutar el siguiente código.

val mongoClient = MongoClient.create(<connection uri>);
val database = mongoClient.getDatabase(<database>);
val collection = database.getCollection<Document>(<collection>);
collection.find().first();

Este código produce una salida similar a la siguiente.

...
255 [main] DEBUG org.mongodb.driver.connection - Connection pool created for <MongoDB hostname> using options <connection-pool-options>
301 [cluster-ClusterId{value='<cluster-id>', description='null'}-<MongoDB hostname>] DEBUG org.mongodb.driver.connection - Connection pool ready for <MongoDB hostname>
321 [main] DEBUG org.mongodb.driver.connection - Checkout started for connection to <MongoDB hostname>
323 [main] DEBUG org.mongodb.driver.connection - Connection created: address=<MongoDB hostname>, driver-generated ID=3
335 [main] DEBUG org.mongodb.driver.connection - Connection ready: address=<MongoDB hostname>, driver-generated ID=3, established in=<connect-duration> ms
336 [main] DEBUG org.mongodb.driver.connection - Connection checked out: address=<MongoDB hostname>, driver-generated ID=3, duration=<checkout-duration> ms
363 [main] DEBUG org.mongodb.driver.connection - Connection checked in: address=<MongoDB hostname>, driver-generated ID=3

Establece tu archivo log4j2.xml como el siguiente:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</Appenders>
<Loggers>
<Logger name="org.mongodb.driver.connection" level="DEBUG"/>
<Root level="OFF">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>

Para probar que la configuración del registrador fue exitosa, ejecutar el siguiente código.

val mongoClient = MongoClient.create(<connection uri>);
val database = mongoClient.getDatabase(<database>);
val collection = database.getCollection<Document>(<collection>);
collection.find().first();

Este código produce una salida que se asemeja a lo siguiente:

...
21:27:17.035 [main] DEBUG org.mongodb.driver.connection - Connection pool created for <MongoDB hostname> using options <connection-pool-options>
21:27:17.058 [cluster-ClusterId{value='<cluster-id>', description='null'}-<MongoDB hostname>] DEBUG org.mongodb.driver.connection - Connection pool ready for <MongoDB hostname>
21:27:17.064 [main] DEBUG org.mongodb.driver.connection - Checkout started for connection to <MongoDB hostname>
21:27:17.069 [main] DEBUG org.mongodb.driver.connection - Connection created: address=<MongoDB hostname>, driver-generated ID=3
21:27:17.075 [main] DEBUG org.mongodb.driver.connection - Connection ready: address=<MongoDB hostname>, driver-generated ID=3, established in=<connect-duration> ms
21:27:17.075 [main] DEBUG org.mongodb.driver.connection - Connection checked out: address=<MongoDB hostname>, driver-generated ID=3, duration=<checkout-duration> ms
21:27:17.086 [main] DEBUG org.mongodb.driver.connection - Connection checked in: address=<MongoDB hostname>, driver-generated ID=3

Para obtener más información sobre las capacidades de registro de MongoDB, consulte Mensajes de registro en el manual del servidor MongoDB.

Para obtener información completa sobre los marcos de registro analizados en esta guía, consulte la siguiente documentación externa:

Volver

Búsqueda vectorial de MongoDB

En esta página