X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=lib%2Flogging.c;h=cf5c9955376c330c8233b86de4f389b2da62d148;hb=9b24b6aa4258079f2b59fa156dd3e070969f6f2a;hp=53c2a8467475373ba497c1b6109bee0b120ec8f1;hpb=1e0aa71d6620ed43b99b5b379c1183dda63f3761;p=babeltrace.git diff --git a/lib/logging.c b/lib/logging.c index 53c2a846..cf5c9955 100644 --- a/lib/logging.c +++ b/lib/logging.c @@ -1,5 +1,5 @@ /* - * Copyright 2017 Philippe Proulx + * Copyright 2017-2018 Philippe Proulx * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -27,8 +27,25 @@ #define BT_LOG_TAG "LIB" #include +#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) { @@ -42,37 +59,28 @@ enum bt_logging_level bt_logging_get_global_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(),