Logging: setting log level wasn't working
authorCampbell Barton <ideasman42@gmail.com>
Fri, 4 May 2018 06:00:22 +0000 (08:00 +0200)
committerCampbell Barton <ideasman42@gmail.com>
Fri, 4 May 2018 06:00:22 +0000 (08:00 +0200)
intern/clog/CLG_log.h
intern/clog/clog.c
source/creator/creator_args.c

index 8afa9edd75b487ba189caa579382f2b6efefa44c..ff8f983b10cb232caacaed51383a860dce5b8c59 100644 (file)
@@ -150,6 +150,8 @@ void CLG_fatal_fn_set(void (*fatal_fn)(void *file_handle));
 void CLG_type_filter_include(const char *type_filter, int type_filter_len);
 void CLG_type_filter_exclude(const char *type_filter, int type_filter_len);
 
+void CLG_level_set(int level);
+
 void CLG_logref_init(CLG_LogRef *clg_ref);
 
 /** Declare outside function, declare as extern in header. */
index dc0229e0748d9a4476489b6bc0d91d2c38b52cbb..e93ba9ec2b75960bf75ef32496c8c099c0ba2a21 100644 (file)
@@ -492,6 +492,14 @@ static void CLG_ctx_type_filter_include(CLogContext *ctx, const char *type_match
        clg_ctx_type_filter_append(&ctx->filters[1], type_match, type_match_len);
 }
 
+static void CLG_ctx_level_set(CLogContext *ctx, int level)
+{
+       ctx->default_type.level = level;
+       for (CLG_LogType *ty = ctx->types; ty; ty = ty->next) {
+               ty->level = level;
+       }
+}
+
 static CLogContext *CLG_ctx_init(void)
 {
        CLogContext *ctx = MEM_callocN(sizeof(*ctx), __func__);
@@ -569,6 +577,12 @@ void CLG_type_filter_include(const char *type_match, int type_match_len)
        CLG_ctx_type_filter_include(g_ctx, type_match, type_match_len);
 }
 
+void CLG_level_set(int level)
+{
+       CLG_ctx_level_set(g_ctx, level);
+}
+
+
 /** \} */
 
 /* -------------------------------------------------------------------- */
index 1baae1864bff1fcff3a27cb21a9c423aa5571075..675f2621942d3a03b671391cac9faed0168cc6a0 100644 (file)
@@ -725,8 +725,11 @@ static int arg_handle_log_level_set(int argc, const char **argv, void *UNUSED(da
                if (!parse_int_clamp(argv[1], NULL, -1, INT_MAX, &G.log.level, &err_msg)) {
                        printf("\nError: %s '%s %s'.\n", err_msg, arg_id, argv[1]);
                }
-               if (G.log.level == -1) {
-                       G.log.level = INT_MAX;
+               else {
+                       if (G.log.level == -1) {
+                               G.log.level = INT_MAX;
+                       }
+                       CLG_level_set(G.log.level);
                }
                return 1;
        }