Docs Menu
Docs Home
/ /

Registrar eventos del controlador

En esta guía, puede aprender a configurar un registrador en el controlador de sincronización de Kotlin.

Esta guía muestra cómo registrar eventos en el controlador. Si desea aprender a usar la información sobre la actividad del controlador en el código, consulte Guía deeventos de la aplicación Monitor.

El controlador Kotlin Sync utiliza Simple Logging Facade para Java (SLF4J) para permitirle especificar el marco de registro que prefiera. Para obtener más información sobre SLF4J, consulte Documentación de SLF4J.

Configurar un registrador es opcional. Para configurarlo, debe incluir lo siguiente en su proyecto:

  • El slf4j-api artefacto en su classpath

  • Un marco de registro

  • Un enlace que conecta el slf4j-api artefacto a un marco de registro

Si el controlador no puede encontrar el artefacto slf4j-api en su classpath, el controlador genera la siguiente advertencia y deshabilita todo registro futuro:

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. Seleccione el Logback o la pestaña Log4j2 para ver la sintaxis correspondiente:

Seleccione la pestaña Maven o Gradle para obtener información sobre cómo configurar Logback con la herramienta de administración de dependencias de su proyecto:

Agregue la siguiente dependencia a su archivo pom.xml.

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

Agregue la siguiente dependencia a su 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 predeterminado

El nivel de registro predeterminado de Logback es DEBUG. Para saber cómo cambiar el nivel de registro de Logback, consulte la sección "Configurar nivel de registro" de esta página.

Seleccione la pestaña Maven o Gradle para obtener información sobre cómo configurar Log4j2 con la herramienta de administración de dependencias de su proyecto.

Agregue la siguiente dependencia a su archivo pom.xml.

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

Agregue la siguiente dependencia a su archivo build.gradle.

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

Una vez que haya incluido la dependencia anterior, registre un error utilizando 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 predeterminado

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.

Puede configurar el nivel de registro de su registrador mediante el sistema de configuración del marco de registro vinculado a SLF4J. El nivel de registro especifica un límite inferior para la urgencia de un mensaje para que el registrador lo muestre.

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 marco Logback define los siguientes niveles de registro ordenados del más urgente al menos urgente:

  • ERROR

  • WARN

  • INFO

  • DEBUG

  • TRACE

Establezca su archivo logback.xml de la siguiente manera:

<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 probar que la configuración de su registrador fue exitosa, ejecute 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:

...
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

Establezca su archivo log4j2.xml de la siguiente manera:

<?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 probar que la configuración de su registrador fue exitosa, ejecute 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:

...
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 Kotlin Sync define los siguientes nombres de registradores 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 grupos de conexiones

org.mongodb.driver.connection.tls

Registra eventos TLS

org.mongodb.driver.operation

Registra operaciones, incluido el registro relacionado 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 deshabilita el registrador raíz y establece el nivel de registro del registrador org.mongodb.driver.connection en DEBUG. Esto hará que el controlador registre únicamente los mensajes relacionados con las conexiones y los grupos de conexiones en el nivel DEBUG o superior. Seleccione la pestaña Logback o Log4j2 para ver la sintaxis correspondiente:

Establezca su archivo logback.xml de la siguiente manera:

<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

Establezca su archivo log4j2.xml de la siguiente manera:

<?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 similar a la 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