Docs Menu
Docs Home
/ /

Registro

En esta guía, aprenderá a usar el controlador C para configurar el registro estructurado de su aplicación. El registro le permite ver un registro discreto, basado en eventos, de las actividades del controlador.

Los "loggers" registran mensajes en un nivel de gravedad o nivel de verbosidad que puedes especificar. Cuando habilitas el registro en tu aplicación, puedes recibir información sobre las actividades de tu aplicación en diferentes niveles de detalle. El driver te permite registrar información categorizada en los siguientes niveles de gravedad:

  • emergency

  • alert

  • critical

  • error

  • warn

  • notice

  • info

  • debug

  • trace

  • off

La lista anterior está ordenada por nivel de gravedad decreciente, siendo emergency el nivel más alto. Al especificar un nivel de gravedad, el controlador también registra todos los mensajes con niveles de gravedad más altos. Por ejemplo, si establece el nivel de registro en critical, el controlador también registrará los mensajes con niveles de gravedad emergency y alert.

Cuanto menor sea el nivel de gravedad que especifique, más información registrará el controlador, lo que podría afectar el rendimiento de su aplicación.

Tip

Para aprender más sobre los niveles de gravedad del registro, consulte la entrada de Wikipedia sobre el Estándar Syslog para el registro de mensajes.

La configuración del registro estructurado se rastrea explícitamente mediante una mongoc_structured_log_opts_t instancia. El controlador C toma la configuración predeterminada de las variables de entorno y ofrece configuración programática opcional adicional. Use mongoc_structured_log_opts_new() para especificar variables de entorno. Para obtener más información mongoc_structured_log_opts_t sobre, consulte mongoc_structured_log_opts_t en la documentación de la API de libmongoc.

Normalmente, las variables de entorno proporcionan valores predeterminados que pueden sobrescribirse programáticamente. Para solicitar el comportamiento opuesto, donde el entorno pueda sobrescribir los valores predeterminados programáticos, utilice la mongoc_structured_log_opts_set_max_levels_from_env() función. El controlador puede filtrar los mensajes de registro estructurados de forma arbitraria, pero, para optimizar el rendimiento y por comodidad, un filtro integrado limita el nivel máximo de registro de los mensajes reportados con una configuración por componente. Para obtener más información mongoc_structured_log_opts_set_max_levels_from_env() sobre, consulte mongoc_structured_log_opts_set_max_levels_from_env() en la documentación de la API de libmongoc.

El siguiente bloque de código implementa el registro haciendo lo siguiente:

  • Crea un tipo mongoc_structured_log_opts_t para configurar el registro

  • Establece el nivel de registro deseado en INFO

  • Proporciona una función de controlador para procesar mensajes de registro

  • Aplica las opciones de registro a su cliente o grupo de clientes mediante la función mongoc_client_set_structured_log_opts()

#include <mongoc/mongoc.h>
#include <stdio.h>
static void log_handler(const mongoc_structured_log_entry_t *entry, void *user_data) {
printf("Log: %s - %s\n",
mongoc_structured_log_get_component_name(mongoc_structured_log_entry_get_component(entry)),
mongoc_structured_log_entry_get_message_string(entry));
}
int main(void) {
mongoc_init();
// Create logging options
mongoc_structured_log_opts_t *log_opts = mongoc_structured_log_opts_new();
mongoc_structured_log_opts_set_max_level_for_all_components(log_opts, MONGOC_STRUCTURED_LOG_LEVEL_INFO);
mongoc_structured_log_opts_set_handler(log_opts, log_handler, NULL);
// Create client and set logging
mongoc_client_t *client = mongoc_client_new("<connection-string>");
mongoc_client_set_structured_log_opts(client, log_opts);
// Perform operation to generate logs
bson_t *command = BCON_NEW("ping", BCON_INT32(1));
bson_t reply;
bson_error_t error;
mongoc_client_command_simple(client, "admin", command, NULL, &reply, &error);
// Cleanup
bson_destroy(command);
bson_destroy(&reply);
mongoc_structured_log_opts_destroy(log_opts);
mongoc_client_destroy(client);
mongoc_cleanup();
return 0;
}

Si ejecutas tu aplicación y el registro contra conexiones en el nivel debug, el controlador emite mensajes cada vez que abres, usas y cierras una conexión. El siguiente código muestra el comando para esta especificación de registro:

mongoc_structured_log_opts_t *log_opts = mongoc_structured_log_opts_new();
mongoc_structured_log_opts_set_max_level_for_all_components(
log_opts, MONGOC_STRUCTURED_LOG_LEVEL_DEBUG);
mongoc_structured_log_opts_set_handler(log_opts, debug_log_handler, NULL);
// Create client with DEBUG logging enabled
mongoc_client_t *client = mongoc_client_new("<connection-string>");
mongoc_client_set_structured_log_opts(client, log_opts);

Con el seguimiento de nivel debug especificado, cuando abre y usa una conexión, el controlador genera debug mensajes de registro:

bson_t *doc = BCON_NEW("x", BCON_INT32(1));
bson_error_t error;
if (!mongoc_collection_insert_one(collection, doc, NULL, NULL, &error)) {
fprintf(stderr, "Insert failed: %s\n", error.message);
}
[2023-07-21T18:13:00Z DEBUG mongodb::connection] Connection pool created topologyId="..." serverHost="..." serverPort=27017
[2023-07-21T18:13:00Z DEBUG mongodb::connection] Connection pool created topologyId="..." serverHost="..." serverPort=27017
[2023-07-21T18:13:00Z DEBUG mongodb::connection] Connection pool created topologyId="..." serverHost="..." serverPort=27017
[2023-07-21T18:13:00Z DEBUG mongodb::connection] Connection pool ready topologyId="..." serverHost="..." serverPort=27017
[2023-07-21T18:13:00Z DEBUG mongodb::connection] Connection checkout started topologyId="..." serverHost="..." serverPort=27017
[2023-07-21T18:13:00Z DEBUG mongodb::connection] Connection created topologyId="..." serverHost="..." serverPort=27017 driverConnectionId=1
...

Para obtener más información sobre cómo especificar otros niveles de registro en el controlador C, consulte Niveles y componentes en la documentación de la API de libmongoc.

Para obtener más información sobre cómo configurar las opciones del cliente, consulte la guía en Conéctese a MongoDB. Para obtener más información sobre el registro estructurado en el controlador C, consulte "Registro estructurado" en la documentación de la API de libmongoc.

Tip

Monitoring

Además del registro, puedes habilitar la monitorización en tu aplicación. Para obtener más información, consulta las guías de monitorización.

Volver

Búsqueda vectorial de MongoDB

En esta página