/*
- * Copyright 2017 Philippe Proulx <pproulx@efficios.com>
+ * Copyright 2017-2018 Philippe Proulx <pproulx@efficios.com>
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
#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;
}