Browse Source

多个ulog后端时不支持support_color后端的log指针偏移错误,导致保存到文件的日志出现乱码。

梁林 3 years ago
parent
commit
a6bf03a0c8
1 changed files with 3 additions and 2 deletions
  1. 3 2
      components/utilities/ulog/ulog.c

+ 3 - 2
components/utilities/ulog/ulog.c

@@ -445,6 +445,7 @@ void ulog_output_to_all_backend(rt_uint32_t level, const char *tag, rt_bool_t is
         {
         {
             /* recalculate the log start address and log size when backend not supported color */
             /* recalculate the log start address and log size when backend not supported color */
             rt_size_t color_info_len = 0, output_size = size;
             rt_size_t color_info_len = 0, output_size = size;
+            char *output_log = log;
 
 
             if (color_output_info[level] != RT_NULL)
             if (color_output_info[level] != RT_NULL)
                 color_info_len = rt_strlen(color_output_info[level]);
                 color_info_len = rt_strlen(color_output_info[level]);
@@ -453,10 +454,10 @@ void ulog_output_to_all_backend(rt_uint32_t level, const char *tag, rt_bool_t is
             {
             {
                 rt_size_t color_hdr_len = rt_strlen(CSI_START) + color_info_len;
                 rt_size_t color_hdr_len = rt_strlen(CSI_START) + color_info_len;
 
 
-                log += color_hdr_len;
+                output_log += color_hdr_len;
                 output_size -= (color_hdr_len + (sizeof(CSI_END) - 1));
                 output_size -= (color_hdr_len + (sizeof(CSI_END) - 1));
             }
             }
-            backend->output(backend, level, tag, is_raw, log, output_size);
+            backend->output(backend, level, tag, is_raw, output_log, output_size);
         }
         }
 #endif /* !defined(ULOG_USING_COLOR) || defined(ULOG_USING_SYSLOG) */
 #endif /* !defined(ULOG_USING_COLOR) || defined(ULOG_USING_SYSLOG) */
     }
     }