void mongoc_log (mongoc_log_level_t log_level, const char *log_domain, const char *format, ...) { va_list args; char *message; static mongoc_once_t once = MONGOC_ONCE_INIT; mongoc_once(&once, &_mongoc_ensure_mutex_once); if (!gLogFunc #ifdef MONGOC_TRACE || (log_level == MONGOC_LOG_LEVEL_TRACE && !gLogTrace) #endif ) { return; } BSON_ASSERT (format); va_start(args, format); message = bson_strdupv_printf(format, args); va_end(args); mongoc_mutex_lock(&gLogMutex); gLogFunc(log_level, log_domain, message, gLogData); mongoc_mutex_unlock(&gLogMutex); bson_free(message); }
void mongoc_log (mongoc_log_level_t log_level, const char *log_domain, const char *format, ...) { va_list args; char *message; int stop_logging; mongoc_once (&once, &_mongoc_ensure_mutex_once); stop_logging = !gLogFunc; #ifdef MONGOC_TRACE stop_logging = stop_logging || (log_level == MONGOC_LOG_LEVEL_TRACE && !gLogTrace); #endif if (stop_logging) { return; } BSON_ASSERT (format); va_start (args, format); message = bson_strdupv_printf (format, args); va_end (args); mongoc_mutex_lock (&gLogMutex); gLogFunc (log_level, log_domain, message, gLogData); mongoc_mutex_unlock (&gLogMutex); bson_free (message); }
void mongoc_log_set_handler (mongoc_log_func_t log_func, void *user_data) { mongoc_once (&once, &_mongoc_ensure_mutex_once); mongoc_mutex_lock (&gLogMutex); gLogFunc = log_func; gLogData = user_data; mongoc_mutex_unlock (&gLogMutex); }
void mongoc_log_set_handler (mongoc_log_func_t log_func, void *user_data) { mongoc_once_t once = MONGOC_ONCE_INIT; mongoc_once(&once, &_mongoc_ensure_mutex_once); mongoc_mutex_lock(&gLogMutex); gLogFunc = log_func; mongoc_mutex_unlock(&gLogMutex); }
void mongoc_log (mongoc_log_level_t log_level, const char *log_domain, const char *format, ...) { va_list args; char *message; static mongoc_once_t once = MONGOC_ONCE_INIT; mongoc_once(&once, &_mongoc_ensure_mutex_once); bson_return_if_fail(format); va_start(args, format); message = bson_strdupv_printf(format, args); va_end(args); mongoc_mutex_lock(&gLogMutex); gLogFunc(log_level, log_domain, message, gLogData); mongoc_mutex_unlock(&gLogMutex); bson_free(message); }
void mongoc_cleanup (void) { static mongoc_once_t once = MONGOC_ONCE_INIT; mongoc_once (&once, _mongoc_do_cleanup); }
void mongoc_init (void) { static mongoc_once_t once = MONGOC_ONCE_INIT; mongoc_once (&once, _mongoc_do_init); }