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

Registro

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

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 especifiques, más información registrará el controlador, lo que podría afectar el rendimiento de tu 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 realizando lo siguiente:

  • Crea un tipo mongoc_structured_log_opts_t para configurar los registros

  • 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 tu cliente o grupo de clientes usando 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 nivel de rastreo debug especificado, cuando abras y uses una conexión, el controlador generará 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 registros en el controlador C, consulta Niveles y Componentes en la documentación de la API 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 driver C, consulte Registro estructurado en la documentación de la API 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