Overview
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.
Configurar un registrador
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-apiartefacto en su classpathUn marco de registro
Un enlace que conecta el
slf4j-apiartefacto 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
Ejemplo de configuración del registrador
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.
Configurar el nivel de registro
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.
Ejemplo de configuración del registrador
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:
ERRORWARNINFODEBUGTRACE
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:
FATALERRORWARNINFODEBUGTRACEALL
Establezca su archivo log4j2.xml de la siguiente manera:
<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}
Nombres de registradores
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 |
|---|---|
| Registra eventos de autenticación |
| Registra eventos relacionados con instancias de MongoClient |
| Registra eventos relacionados con la supervisión de las implementaciones de MongoDB |
| Registra conexiones y grupos de conexiones |
| Registra eventos TLS |
| Registra operaciones, incluido el registro relacionado con reintentos automáticos |
| Registra los comandos enviados y las respuestas recibidas de las implementaciones de MongoDB |
| Registra eventos de análisis de cadenas de conexión |
| Registra eventos de Java Management Extensions (JMX) |
Ejemplo de nombre de registrador
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:
<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
Información Adicional
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: