Visão geral
Neste guia, você pode aprender como usar o driver C++ para configurar o registro para seu aplicação. O registro permite que você visualize um registro discreto e baseado em eventos das atividades do motorista.
Os registradores registram mensagens em um nível de gravidade ou verbosidade que você pode especificar. O driver categoriza as mensagens de registro nos seguintes níveis, listados da maior para a menor gravidade:
errorcriticalwarningmessageinfodebugtrace
Quando você especifica um nível de gravidade, o driver também registra todas as mensagens com níveis de gravidade mais altos. Por exemplo, se você definir o nível de registro como warning, o driver também registrará mensagens com os níveis de gravidade error e critical.
Quanto menor o nível de gravidade especificado, mais informações o driver registra, o que pode impacto o desempenho do seu aplicação.
Criar um registrador filtrado
Você pode criar uma implementação de registrador definida pelo usuário para lidar com a saída do registrador.
Para configurar seu aplicação para receber mensagens sobre eventos de driver, defina uma implementação da classe logger() .
O exemplo a seguir executa as seguintes ações para criar um registrador que filtra mensagens de registro no nível de gravidade INFO:
Define uma classe de registrador filtrado para lidar com mensagens de registro em um determinado nível e superior.
Cria um novo registrador filtrado para o cliente com um nível de registro de
infoe superior.Testa o registrador com uma operação de inserção.
// 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)
A saída do registrador contém o tempo da operação, o nível de gravidade da mensagem e a mensagem de registro.
Documentação da API
Para obter mais informações sobre as opções de registrador para o driver C++ , consulte a seguinte documentação da API: