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 de gravedad más alto. Cuando se indica un nivel de gravedad, el driver también registra todos los mensajes con niveles de gravedad superiores. Por ejemplo, si se configura el nivel de registro a critical, el controlador también registrará mensajes con los 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 de los registros estructurados es seguida explícitamente por una instancia de mongoc_structured_log_opts_t. El driver C toma la configuración por defecto de variables de entorno y ofrece una configuración programática adicional opcional. Utiliza mongoc_structured_log_opts_new() para especificar las variables de entorno. Para aprender más sobre mongoc_structured_log_opts_t, consulta mongoc_structured_log_opts_t en la documentación API de libmongoc.

Normalmente, las variables de entorno proporcionan valores por defecto que pueden ser anulados mediante programación. Para solicitar el comportamiento opuesto, donde tus valores predeterminados programáticos puedan ser anulados por el entorno, utiliza la función mongoc_structured_log_opts_set_max_levels_from_env(). El administrador puede filtrar arbitrariamente los mensajes de registro estructurados, pero como optimización de rendimiento y como conveniencia, 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 sobre mongoc_structured_log_opts_set_max_levels_from_env(), consulta 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 manejadora 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 aprender más sobre la configuración de opciones para los clientes, consulta 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 de la registro, puedes habilitar la supervisión en tu aplicación. Para aprender más, consulte las guías de supervisión.

Next

C

En esta página