Logging
MongoDB C driver Logging Abstraction
Synopsis
typedef enum
{
MONGOC_LOG_LEVEL_ERROR,
MONGOC_LOG_LEVEL_CRITICAL,
MONGOC_LOG_LEVEL_WARNING,
MONGOC_LOG_LEVEL_MESSAGE,
MONGOC_LOG_LEVEL_INFO,
MONGOC_LOG_LEVEL_DEBUG,
MONGOC_LOG_LEVEL_TRACE,
} mongoc_log_level_t;
#define MONGOC_ERROR(...)
#define MONGOC_CRITICAL(...)
#define MONGOC_WARNING(...)
#define MONGOC_MESSAGE(...)
#define MONGOC_INFO(...)
#define MONGOC_DEBUG(...)
typedef void (*mongoc_log_func_t) (mongoc_log_level_t log_level,
const char *log_domain,
const char *message,
void *user_data);
void mongoc_log_set_handler (mongoc_log_func_t log_func,
void *user_data);
void mongoc_log (mongoc_log_level_t log_level,
const char *log_domain,
const char *format,
...) BSON_GNUC_PRINTF(3, 4);
const char *mongoc_log_level_str (mongoc_log_level_t log_level);
void mongoc_log_default_handler (mongoc_log_level_t log_level,
const char *log_domain,
const char *message,
void *user_data);
The MongoDB C driver comes with an abstraction for logging that you can use in your application, or integrate with an existing logging system. To integrate with an existing logging system use mongoc_log_set_handler() and provide a callback that will log to your external system.
Macros
To make logging a little less painful, various helper macros are provided. See the following example.
#undef MONGOC_LOG_DOMAIN
#define MONGOC_LOG_DOMAIN "my-custom-domain"
MONGOC_WARNING ("An error occurred: %s", strerror (errno));
Custom Log Handlers
To integrate with external logging systems, the MongoDB C driver allows for a custom log handler that can receive formatted log messages. By providing a mongoc_log_func_t to mongoc_log_set_handler() you will be called each time a new log message is received. This function is called within a mutex to ensure reduce potential thread-safety issues.
To reset to the default log handler, pass mongoc_log_default_handler to mongoc_log_set_handler() with NULL for user_data.