#include <stdlib.h>
#include <stdio.h>
#include <babeltrace/logging.h>
+#include <babeltrace/babeltrace-internal.h>
/* To detect incompatible changes you can define BT_LOG_VERSION_REQUIRED to be
* the current value of BT_LOG_VERSION before including this file (or via
#if defined(BT_LOG_OUTPUT_LEVEL)
#define _BT_LOG_OUTPUT_LEVEL BT_LOG_OUTPUT_LEVEL
#else
- #define _BT_LOG_OUTPUT_LEVEL _bt_log_global_output_lvl
+ /*
+ * We disallow this to make sure Babeltrace modules always
+ * have their own local log level.
+ */
+ #error No log level symbol specified: please define BT_LOG_OUTPUT_LEVEL before including this header.
#endif
/* "Tag" is a compound string that could be associated with a log message. It
#if defined(__printflike)
#define _BT_LOG_PRINTFLIKE(str_index, first_to_check) \
__printflike(str_index, first_to_check)
+#elif defined(__MINGW_PRINTF_FORMAT)
+ #define _BT_LOG_PRINTFLIKE(str_index, first_to_check) \
+ __attribute__((format(__MINGW_PRINTF_FORMAT, str_index, first_to_check)))
#elif defined(__GNUC__)
#define _BT_LOG_PRINTFLIKE(str_index, first_to_check) \
__attribute__((format(__printf__, str_index, first_to_check)))
return level;
}
+#define BT_LOG_LEVEL_EXTERN_SYMBOL(_level_sym) \
+ extern int _level_sym
+
+#define BT_LOG_INIT_LOG_LEVEL(_level_sym, _env_var) \
+ BT_HIDDEN int _level_sym = BT_LOG_NONE; \
+ static \
+ void __attribute__((constructor)) _bt_log_level_ctor(void) \
+ { \
+ _level_sym = bt_log_get_level_from_env(_env_var); \
+ }
+
#ifdef __cplusplus
}
#endif
-#endif
+#endif /* BABELTRACE_LOGGING_INTERNAL_H */