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

Registrar eventos del controlador

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

Los registradores registran mensajes a un nivel de gravedad o verbosidad que usted puede especificar. El controlador categoriza los mensajes de registro en los siguientes niveles, enlistados de mayor a menor gravedad:

  • error

  • critical

  • warning

  • message

  • info

  • debug

  • trace

Cuando se especifica un nivel de severidad, el controlador también registra todos los mensajes con niveles de severidad superiores. Por ejemplo, si configura el nivel de registro en warning, el driver también registrará los mensajes con niveles de gravedad error y critical.

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.

Puede crear una implementación de registrador definida por el usuario para gestionar la salida del registrador.

Para configurar tu aplicación y recibir mensajes sobre eventos del controlador, define una implementación de la clase logger().

El siguiente ejemplo realiza las siguientes acciones para crear un registrador que filtra los mensajes de registro en el nivel de gravedad INFO:

  • Define una clase de registro con filtro que gestiona mensajes de registro en un determinado nivel y superiores.

  • Crea un nuevo registrador filtrado para el cliente con un nivel de registro de info y superior.

  • Prueba el registrador con una operación de inserción.

// Creates a filtered logger that only logs messages at or above a specified level
class filtered_logger : public mongocxx::logger {
public:
// Sets the default minimum log level to WARNING
explicit filtered_logger(mongocxx::log_level min_level = mongocxx::log_level::k_warning)
: min_level_(min_level) {}
void operator()(mongocxx::log_level level,
std::string_view domain,
std::string_view message) noexcept override {
// Only log messages at or above the minimum level
if (level <= min_level_) {
std::cout << "[" << level_to_string(level) << "] "
<< domain << ": " << message << std::endl;
}
}
private:
mongocxx::log_level min_level_;
std::string level_to_string(mongocxx::log_level level) const {
switch (level) {
case mongocxx::log_level::k_error: return "ERROR";
case mongocxx::log_level::k_critical: return "CRITICAL";
case mongocxx::log_level::k_warning: return "WARNING";
case mongocxx::log_level::k_message: return "MESSAGE";
case mongocxx::log_level::k_info: return "INFO";
case mongocxx::log_level::k_debug: return "DEBUG";
case mongocxx::log_level::k_trace: return "TRACE";
default: return "UNKNOWN";
}
}
};
// Creates a new logger for the client
void example_filtered_logger() {
std::cout << "\n=== Filtered Logger (INFO and above) ===" << std::endl;
// Logs INFO, MESSAGE, WARNING, CRITICAL, and ERROR messages
auto logger = std::make_unique<filtered_logger>(mongocxx::log_level::k_info);
mongocxx::instance instance{std::move(logger)};
mongocxx::uri uri("mongodb://127.0.0.1:27017");
mongocxx::client client(uri);
auto collection = client["test"]["example3"];
bsoncxx::builder::stream::document doc{};
doc << "name" << "Filtered Test";
collection.insert_one(doc.view());
std::cout << "Operation completed! (Debug and Trace messages were filtered out)" << std::endl;
}
=== Filtered Logger (INFO and above) ===
[INFO] mongocxx: libmongoc logging callback enabled
Operation completed! (Debug and Trace messages were filtered out)

La salida del logger contiene la hora de la operación, el nivel de gravedad del mensaje y el mensaje de registro.

Para obtener más información sobre las opciones de registrador para el driver C++, consulta la siguiente documentación de la API:

  • mongocxx::logger

Volver

Búsqueda vectorial de MongoDB

En esta página