#define BT_LOG_TAG "LIB"
#include <babeltrace/lib-logging-internal.h>
+#ifdef BT_DEV_MODE
+/*
+ * Default log level is FATAL in developer mode because fatal logging is
+ * our way to communicate an unsatisfied precondition and the details.
+ */
+# define DEFAULT_LOG_LEVEL BT_LOG_FATAL
+#else
+/*
+ * In non-developer mode, use NONE by default: we don't to print logging
+ * statements for any executable which links with the library. The
+ * executable should call bt_logging_set_global_level() or the
+ * executable's user should set the BABELTRACE_LOGGING_GLOBAL_LEVEL
+ * environment variable.
+ */
+# define DEFAULT_LOG_LEVEL BT_LOG_NONE
+#endif /* BT_DEV_MODE */
+
BT_HIDDEN
-int bt_lib_log_level = BT_LOG_NONE;
+int bt_lib_log_level = DEFAULT_LOG_LEVEL;
enum bt_logging_level bt_logging_get_minimal_level(void)
{
void bt_logging_set_global_level(enum bt_logging_level log_level)
{
+#ifdef BT_DEV_MODE
+ /*
+ * Do not allow the library's log level to fall to NONE when in
+ * developer mode because fatal logging is our way to
+ * communicate an unsatisfied precondition and the details.
+ */
+ if (log_level == BT_LOG_NONE) {
+ log_level = BT_LOG_FATAL;
+ }
+#endif
+
bt_lib_log_level = log_level;
}
static
void __attribute__((constructor)) bt_logging_ctor(void)
{
- enum bt_logging_level log_level = BT_LOG_NONE;
- const char *log_level_env = getenv("BABELTRACE_LOGGING_GLOBAL_LEVEL");
const char *v_extra = bt_version_get_extra() ? bt_version_get_extra() :
"";
- if (!log_level_env) {
- goto set_level;
- }
-
- if (strcmp(log_level_env, "VERBOSE") == 0) {
- log_level = BT_LOGGING_LEVEL_VERBOSE;
- } else if (strcmp(log_level_env, "DEBUG") == 0) {
- log_level = BT_LOGGING_LEVEL_DEBUG;
- } else if (strcmp(log_level_env, "INFO") == 0) {
- log_level = BT_LOGGING_LEVEL_INFO;
- } else if (strcmp(log_level_env, "WARN") == 0) {
- log_level = BT_LOGGING_LEVEL_WARN;
- } else if (strcmp(log_level_env, "ERROR") == 0) {
- log_level = BT_LOGGING_LEVEL_ERROR;
- } else if (strcmp(log_level_env, "FATAL") == 0) {
- log_level = BT_LOGGING_LEVEL_FATAL;
- }
-
-set_level:
- bt_logging_set_global_level(log_level);
+ bt_logging_set_global_level(
+ bt_log_get_level_from_env("BABELTRACE_LOGGING_GLOBAL_LEVEL"));
BT_LOGI("Babeltrace %d.%d.%d%s library loaded: "
"major=%d, minor=%d, patch=%d, extra=\"%s\"",
bt_version_get_major(), bt_version_get_minor(),