Remove legacy printf_verbose()/printf_debug() and others
[babeltrace.git] / cli / babeltrace.c
index f91bad771d3e0128c492ca5e61012037dda2af23..3c44db359025eb3e73936eb2b129ceac64d81b76 100644 (file)
 #include "babeltrace-cfg-cli-args-default.h"
 
 #define ENV_BABELTRACE_WARN_COMMAND_NAME_DIRECTORY_CLASH "BABELTRACE_CLI_WARN_COMMAND_NAME_DIRECTORY_CLASH"
+#define ENV_BABELTRACE_CLI_LOG_LEVEL "BABELTRACE_CLI_LOG_LEVEL"
 
 /*
  * Known environment variable names for the log levels of the project's
  * modules.
  */
 static const char* log_level_env_var_names[] = {
+       "BABELTRACE_COMMON_LOG_LEVEL",
        "BABELTRACE_PLUGIN_CTF_BTR_LOG_LEVEL",
        "BABELTRACE_PLUGIN_CTF_FS_SRC_LOG_LEVEL",
        "BABELTRACE_PLUGIN_CTF_LTTNG_LIVE_SRC_LOG_LEVEL",
        "BABELTRACE_PLUGIN_CTF_METADATA_LOG_LEVEL",
        "BABELTRACE_PLUGIN_CTF_NOTIF_ITER_LOG_LEVEL",
+       "BABELTRACE_PLUGIN_LTTNG_UTILS_DEBUG_INFO_FLT_LOG_LEVEL",
+       "BABELTRACE_PLUGIN_UTILS_TRIMMER_FLT_LOG_LEVEL",
        "BABELTRACE_PYTHON_PLUGIN_PROVIDER_LOG_LEVEL",
        NULL,
 };
@@ -1909,9 +1913,138 @@ void warn_command_name_and_directory_clash(struct bt_config *cfg)
 static
 void init_log_level(void)
 {
-       bt_cli_log_level = bt_log_get_level_from_env("BABELTRACE_CLI_LOG_LEVEL");
+       bt_cli_log_level = bt_log_get_level_from_env(ENV_BABELTRACE_CLI_LOG_LEVEL);
 }
 
+static
+void set_auto_log_levels(struct bt_config *cfg)
+{
+       const char **env_var_name;
+
+       /*
+        * Override the configuration's default log level if
+        * BABELTRACE_VERBOSE or BABELTRACE_DEBUG environment variables
+        * are found for backward compatibility with legacy Babetrace 1.
+        */
+       if (getenv("BABELTRACE_DEBUG") &&
+                       strcmp(getenv("BABELTRACE_DEBUG"), "1") == 0) {
+               cfg->log_level = 'V';
+       } else if (getenv("BABELTRACE_VERBOSE") &&
+                       strcmp(getenv("BABELTRACE_VERBOSE"), "1") == 0) {
+               cfg->log_level = 'I';
+       }
+
+       /*
+        * Set log levels according to --debug or --verbose. For
+        * backward compatibility, --debug is more verbose than
+        * --verbose. So:
+        *
+        *     --verbose: INFO log level
+        *     --debug:   VERBOSE log level (includes DEBUG, which is
+        *                is less verbose than VERBOSE in the internal
+        *                logging framework)
+        */
+       if (!getenv("BABELTRACE_LOGGING_GLOBAL_LEVEL")) {
+               if (cfg->verbose) {
+                       bt_logging_set_global_level(BT_LOGGING_LEVEL_INFO);
+               } else if (cfg->debug) {
+                       bt_logging_set_global_level(BT_LOGGING_LEVEL_VERBOSE);
+               } else {
+                       /*
+                        * Set library's default log level if not
+                        * explicitly specified.
+                        */
+                       switch (cfg->log_level) {
+                       case 'N':
+                               bt_logging_set_global_level(BT_LOGGING_LEVEL_NONE);
+                               break;
+                       case 'V':
+                               bt_logging_set_global_level(BT_LOGGING_LEVEL_VERBOSE);
+                               break;
+                       case 'D':
+                               bt_logging_set_global_level(BT_LOGGING_LEVEL_DEBUG);
+                               break;
+                       case 'I':
+                               bt_logging_set_global_level(BT_LOGGING_LEVEL_INFO);
+                               break;
+                       case 'W':
+                               bt_logging_set_global_level(BT_LOGGING_LEVEL_WARN);
+                               break;
+                       case 'E':
+                               bt_logging_set_global_level(BT_LOGGING_LEVEL_ERROR);
+                               break;
+                       case 'F':
+                               bt_logging_set_global_level(BT_LOGGING_LEVEL_FATAL);
+                               break;
+                       default:
+                               abort();
+                       }
+               }
+       }
+
+       if (!getenv(ENV_BABELTRACE_CLI_LOG_LEVEL)) {
+               if (cfg->verbose) {
+                       bt_cli_log_level = BT_LOG_INFO;
+               } else if (cfg->debug) {
+                       bt_cli_log_level = BT_LOG_VERBOSE;
+               } else {
+                       /*
+                        * Set CLI's default log level if not explicitly
+                        * specified.
+                        */
+                       switch (cfg->log_level) {
+                       case 'N':
+                               bt_cli_log_level = BT_LOG_NONE;
+                               break;
+                       case 'V':
+                               bt_cli_log_level = BT_LOG_VERBOSE;
+                               break;
+                       case 'D':
+                               bt_cli_log_level = BT_LOG_DEBUG;
+                               break;
+                       case 'I':
+                               bt_cli_log_level = BT_LOG_INFO;
+                               break;
+                       case 'W':
+                               bt_cli_log_level = BT_LOG_WARN;
+                               break;
+                       case 'E':
+                               bt_cli_log_level = BT_LOG_ERROR;
+                               break;
+                       case 'F':
+                               bt_cli_log_level = BT_LOG_FATAL;
+                               break;
+                       default:
+                               abort();
+                       }
+               }
+       }
+
+       env_var_name = log_level_env_var_names;
+
+       while (*env_var_name) {
+               if (!getenv(*env_var_name)) {
+                       if (cfg->verbose) {
+                               setenv(*env_var_name, "I", 1);
+                       } else if (cfg->debug) {
+                               setenv(*env_var_name, "V", 1);
+                       } else {
+                               char val[2] = { 0 };
+
+                               /*
+                                * Set module's default log level if not
+                                * explicitly specified.
+                                */
+                               val[0] = cfg->log_level;
+                               setenv(*env_var_name, val, 1);
+                       }
+               }
+
+               env_var_name++;
+       }
+}
+
+static
 void set_sigint_handler(void)
 {
        struct sigaction new_action, old_action;
@@ -1931,7 +2064,6 @@ int main(int argc, const char **argv)
        int ret;
        int retcode;
        struct bt_config *cfg;
-       const char **env_var_name;
 
        init_log_level();
        set_sigint_handler();
@@ -1957,38 +2089,7 @@ int main(int argc, const char **argv)
                goto end;
        }
 
-       /*
-        * Set log levels according to --debug or --verbose. For
-        * backward compatibility, --debug is more verbose than
-        * --verbose. So:
-        *
-        *     --verbose: INFO log level
-        *     --debug:   VERBOSE log level (includes DEBUG, which is
-        *                is less verbose than VERBOSE in the internal
-        *                logging framework)
-        */
-       if (cfg->verbose) {
-               bt_cli_log_level = BT_LOGGING_LEVEL_INFO;
-               bt_logging_set_global_level(BT_LOGGING_LEVEL_INFO);
-       } else if (cfg->debug) {
-               bt_cli_log_level = BT_LOGGING_LEVEL_VERBOSE;
-               bt_logging_set_global_level(BT_LOGGING_LEVEL_VERBOSE);
-       }
-
-       env_var_name = log_level_env_var_names;
-
-       while (*env_var_name) {
-               if (cfg->verbose) {
-                       setenv(*env_var_name, "I", 1);
-               } else if (cfg->debug) {
-                       setenv(*env_var_name, "V", 1);
-               }
-
-               env_var_name++;
-       }
-
-       babeltrace_debug = cfg->debug;
-       babeltrace_verbose = cfg->verbose;
+       set_auto_log_levels(cfg);
        print_cfg(cfg);
 
        if (cfg->command_needs_plugins) {
This page took 0.027916 seconds and 4 git commands to generate.