Docs Menu
Docs Home
/ /

Registrar eventos del controlador

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

Los registradores registran los mensajes con un nivel de gravedad o nivel de detalle que puede especificar. El controlador clasifica los mensajes de registro en los siguientes niveles, ordenados de mayor a menor gravedad:

  • error

  • critical

  • warning

  • message

  • info

  • debug

  • trace

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 warning, el controlador también registrará los mensajes con niveles de gravedad error y critical.

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.

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

Para configurar su aplicación para recibir mensajes sobre eventos del controlador, defina 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 registrador filtrado para manejar mensajes de registro en un nivel determinado y superior.

  • 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 controlador C++, consulte la siguiente documentación de API:

  • mongocxx::registrador

Volver

Búsqueda vectorial de MongoDB

En esta página