[Log] set log level
authorJaeyun <jy1210.jung@samsung.com>
Thu, 20 Oct 2022 08:39:37 +0000 (17:39 +0900)
committerMyungJoo Ham <myungjoo.ham@samsung.com>
Tue, 25 Oct 2022 06:59:20 +0000 (15:59 +0900)
Add new function to set log level.

Signed-off-by: Jaeyun <jy1210.jung@samsung.com>
include/nnstreamer-edge.h
src/CMakeLists.txt
src/libnnstreamer-edge/nnstreamer-edge-internal.c
src/libnnstreamer-edge/nnstreamer-edge-log.c [new file with mode: 0644]
src/libnnstreamer-edge/nnstreamer-edge-log.h
src/libnnstreamer-edge/nnstreamer-edge-util.c
tools/build_TizenRT/Makefile

index 0d111527ec8b2f8447cca0d4b06d3f8eb6dbacd9..0f8367d636fe41b83d3c5fd1c269aa4251d0291d 100644 (file)
@@ -75,6 +75,18 @@ typedef enum {
   NNS_EDGE_NODE_TYPE_UNKNOWN,
 } nns_edge_node_type_e;
 
+/**
+ * @brief Enumeration for log message.
+ */
+typedef enum {
+  NNS_EDGE_LOG_DEBUG = 0,
+  NNS_EDGE_LOG_INFO,
+  NNS_EDGE_LOG_WARNING,
+  NNS_EDGE_LOG_ERROR,
+  NNS_EDGE_LOG_FATAL,
+  NNS_EDGE_LOG_NONE
+} nns_edge_log_level_e;
+
 /**
  * @brief Callback for the nnstreamer edge event.
  * @note This callback will suspend data stream. Do not spend too much time in the callback.
@@ -447,6 +459,12 @@ int nns_edge_data_set_info (nns_edge_data_h data_h, const char *key, const char
  */
 int nns_edge_data_get_info (nns_edge_data_h data_h, const char *key, char **value);
 
+/**
+ * @brief Set the logging level. Default value is NNS_EDGE_LOG_INFO.
+ * @param[in] level The log level to print out.
+ */
+void nns_edge_set_log_level (nns_edge_log_level_e level);
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */
index e1354ce6889d10b4e0a4a0b940377b8c5d5b9773..ae34073afb76f4ca7f06525e3cee0865d5b5c7c6 100644 (file)
@@ -5,6 +5,7 @@ SET(NNS_EDGE_SRCS
     ${NNS_EDGE_SRC_DIR}/nnstreamer-edge-data.c
     ${NNS_EDGE_SRC_DIR}/nnstreamer-edge-event.c
     ${NNS_EDGE_SRC_DIR}/nnstreamer-edge-internal.c
+    ${NNS_EDGE_SRC_DIR}/nnstreamer-edge-log.c
     ${NNS_EDGE_SRC_DIR}/nnstreamer-edge-util.c
     ${NNS_EDGE_SRC_DIR}/nnstreamer-edge-queue.c
 )
index 965be262a88125a9dd3b48b960498a4514f7d536..8f8274cf6b828c86878f8aed30f20d71a1fbe767 100644 (file)
@@ -387,12 +387,8 @@ _nns_edge_cmd_receive (nns_edge_conn_s * conn, nns_edge_cmd_s * cmd)
     nns_edge_loge ("Failed to receive command, invalid command.");
     return NNS_EDGE_ERROR_IO;
   }
-  /**
-   * @todo Too many unnecessary debug messages are printed. Currently, all messages,
-   *       including debugs and info, are printed regardless of the log level.
-   *       Let's print the log message according to the log level later.
-   */
-  // nns_edge_logd ("Received command:%d (num:%u)", cmd->info.cmd, cmd->info.num);
+
+  nns_edge_logd ("Received command:%d (num:%u)", cmd->info.cmd, cmd->info.num);
   if (cmd->info.num >= NNS_EDGE_DATA_LIMIT) {
     nns_edge_loge ("Invalid request, the max memories for data transfer is %d.",
         NNS_EDGE_DATA_LIMIT);
diff --git a/src/libnnstreamer-edge/nnstreamer-edge-log.c b/src/libnnstreamer-edge/nnstreamer-edge-log.c
new file mode 100644 (file)
index 0000000..d7a6b82
--- /dev/null
@@ -0,0 +1,125 @@
+/* SPDX-License-Identifier: Apache-2.0 */
+/**
+ * Copyright (C) 2022 Samsung Electronics Co., Ltd. All Rights Reserved.
+ *
+ * @file   nnstreamer-edge-log.c
+ * @date   20 October 2022
+ * @brief  Logging functions
+ * @see    https://github.com/nnstreamer/nnstreamer-edge
+ * @author Jaeyun Jung <jy1210.jung@samsung.com>
+ * @bug    No known bugs except for NYI items.
+ */
+
+#include <stdarg.h>
+#include "nnstreamer-edge-log.h"
+
+#if defined(__TIZEN__)
+#include <dlog.h>
+
+#define _print_logd(...) dlog_print (DLOG_DEBUG, TAG_NAME, __VA_ARGS__)
+#define _print_logi(...) dlog_print (DLOG_INFO, TAG_NAME, __VA_ARGS__)
+#define _print_logw(...) dlog_print (DLOG_WARN, TAG_NAME, __VA_ARGS__)
+#define _print_loge(...) dlog_print (DLOG_ERROR, TAG_NAME, __VA_ARGS__)
+#define _print_logf(...) dlog_print (DLOG_FATAL, TAG_NAME, __VA_ARGS__)
+#elif defined(__ANDROID__)
+#include <android/log.h>
+
+#define _print_logd(...) __android_log_print (ANDROID_LOG_DEBUG, TAG_NAME, __VA_ARGS__)
+#define _print_logi(...) __android_log_print (ANDROID_LOG_INFO, TAG_NAME, __VA_ARGS__)
+#define _print_logw(...) __android_log_print (ANDROID_LOG_WARN, TAG_NAME, __VA_ARGS__)
+#define _print_loge(...) __android_log_print (ANDROID_LOG_ERROR, TAG_NAME, __VA_ARGS__)
+#define _print_logf(...) __android_log_print (ANDROID_LOG_FATAL, TAG_NAME, __VA_ARGS__)
+#else
+/**
+ * @brief Internal util function to print log message.
+ */
+static inline void
+_ne_log_print (nns_edge_log_level_e level, const char *fmt, va_list args)
+{
+  const char *level_str[] = {
+    [NNS_EDGE_LOG_DEBUG] = "DEBUG",
+    [NNS_EDGE_LOG_INFO] = "INFO",
+    [NNS_EDGE_LOG_WARNING] = "WARNING",
+    [NNS_EDGE_LOG_ERROR] = "ERROR",
+    [NNS_EDGE_LOG_FATAL] = "FATAL",
+    [NNS_EDGE_LOG_NONE] = NULL,
+  };
+
+  switch (level) {
+    case NNS_EDGE_LOG_WARNING:
+      printf ("\033[33m");
+      break;
+    case NNS_EDGE_LOG_ERROR:
+      printf ("\033[31m");
+      break;
+    case NNS_EDGE_LOG_FATAL:
+      printf ("\033[1;31m");
+      break;
+    default:
+      printf ("\033[20m");
+      break;
+  }
+
+  printf ("[%s][%s] ", level_str[level], TAG_NAME);
+  vprintf (fmt, args);
+  printf ("\n");
+  printf ("\033[0m");
+}
+
+#define _print_logd(...) _ne_log_print (NNS_EDGE_LOG_DEBUG, __VA_ARGS__)
+#define _print_logi(...) _ne_log_print (NNS_EDGE_LOG_INFO, __VA_ARGS__)
+#define _print_logw(...) _ne_log_print (NNS_EDGE_LOG_WARNING, __VA_ARGS__)
+#define _print_loge(...) _ne_log_print (NNS_EDGE_LOG_ERROR, __VA_ARGS__)
+#define _print_logf(...) _ne_log_print (NNS_EDGE_LOG_FATAL, __VA_ARGS__)
+#endif
+
+/**
+ * @brief Internal logging level.
+ */
+static nns_edge_log_level_e g_ne_log_level =
+    (DEBUG) ? NNS_EDGE_LOG_DEBUG : NNS_EDGE_LOG_INFO;
+
+/**
+ * @brief Set the logging level.
+ */
+void
+nns_edge_set_log_level (nns_edge_log_level_e level)
+{
+  g_ne_log_level = level;
+}
+
+/**
+ * @brief Internal util function to print log message.
+ */
+void
+nns_edge_print_log (nns_edge_log_level_e level, const char *fmt, ...)
+{
+  va_list args;
+
+  if (level < g_ne_log_level)
+    return;
+
+  va_start (args, fmt);
+
+  switch (level) {
+    case NNS_EDGE_LOG_DEBUG:
+      _print_logd (fmt, args);
+      break;
+    case NNS_EDGE_LOG_INFO:
+      _print_logi (fmt, args);
+      break;
+    case NNS_EDGE_LOG_WARNING:
+      _print_logw (fmt, args);
+      break;
+    case NNS_EDGE_LOG_ERROR:
+      _print_loge (fmt, args);
+      break;
+    case NNS_EDGE_LOG_FATAL:
+      _print_logf (fmt, args);
+      break;
+    default:
+      break;
+  }
+
+  va_end (args);
+}
index a1422b5d5fb3f2b36ba889007c5ed2d186ccce04..3a81b65f95dfc3fadf089fee9c1d51d8e857e478 100644 (file)
@@ -8,13 +8,13 @@
  * @see    https://github.com/nnstreamer/nnstreamer-edge
  * @author Jaeyun Jung <jy1210.jung@samsung.com>
  * @note   This file is internal header for nnstreamer-edge. DO NOT export this file.
+ * @bug    No known bugs except for NYI items.
  */
 
 #ifndef __NNSTREAMER_EDGE_LOG_H__
 #define __NNSTREAMER_EDGE_LOG_H__
 
-#include <stdio.h>
-#include <stdarg.h>
+#include "nnstreamer-edge.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -22,68 +22,16 @@ extern "C" {
 
 #define TAG_NAME "nnstreamer-edge"
 
-#if defined(__TIZEN__)
-#include <dlog.h>
-
-#define nns_edge_logd(...) dlog_print (DLOG_DEBUG, TAG_NAME, __VA_ARGS__)
-#define nns_edge_logi(...) dlog_print (DLOG_INFO, TAG_NAME, __VA_ARGS__)
-#define nns_edge_logw(...) dlog_print (DLOG_WARN, TAG_NAME, __VA_ARGS__)
-#define nns_edge_loge(...) dlog_print (DLOG_ERROR, TAG_NAME, __VA_ARGS__)
-#define nns_edge_logf(...) dlog_print (DLOG_FATAL, TAG_NAME, __VA_ARGS__)
-#elif defined(__ANDROID__)
-#include <android/log.h>
-
-#define nns_edge_logd(...) __android_log_print (ANDROID_LOG_DEBUG, TAG_NAME, __VA_ARGS__)
-#define nns_edge_logi(...) __android_log_print (ANDROID_LOG_INFO, TAG_NAME, __VA_ARGS__)
-#define nns_edge_logw(...) __android_log_print (ANDROID_LOG_WARN, TAG_NAME, __VA_ARGS__)
-#define nns_edge_loge(...) __android_log_print (ANDROID_LOG_ERROR, TAG_NAME, __VA_ARGS__)
-#define nns_edge_logf(...) __android_log_print (ANDROID_LOG_FATAL, TAG_NAME, __VA_ARGS__)
-#else
-/**
- * @brief Internal enumeration for log message.
- */
-typedef enum {
-  NE_LOG_DEBUG = 0,
-  NE_LOG_INFO,
-  NE_LOG_WARNING,
-  NE_LOG_ERROR,
-  NE_LOG_FATAL,
-  NE_LOG_NONE
-} nns_edge_log_level_e;
-
 /**
  * @brief Internal util function to print log message.
  */
-static inline void
-nns_edge_print_log (nns_edge_log_level_e level, const char *fmt, ...)
-{
-  const char *level_str[] = {
-    [NE_LOG_DEBUG] = "DEBUG",
-    [NE_LOG_INFO] = "INFO",
-    [NE_LOG_WARNING] = "WARNING",
-    [NE_LOG_ERROR] = "ERROR",
-    [NE_LOG_FATAL] = "FATAL",
-    [NE_LOG_NONE] = "DEBUG",
-  };
-
-  va_list args;
-
-  /** @todo expand log util and handle log level (debug, release) */
-  va_start (args, fmt);
-
-  printf ("[%s][%s] ", level_str[level], TAG_NAME);
-  vprintf (fmt, args);
-  printf ("\n");
-
-  va_end (args);
-}
+void nns_edge_print_log (nns_edge_log_level_e level, const char *fmt, ...);
 
-#define nns_edge_logi(...) nns_edge_print_log (NE_LOG_INFO, __VA_ARGS__)
-#define nns_edge_logw(...) nns_edge_print_log (NE_LOG_WARNING, __VA_ARGS__)
-#define nns_edge_loge(...) nns_edge_print_log (NE_LOG_ERROR, __VA_ARGS__)
-#define nns_edge_logd(...) nns_edge_print_log (NE_LOG_DEBUG, __VA_ARGS__)
-#define nns_edge_logf(...) nns_edge_print_log (NE_LOG_FATAL, __VA_ARGS__)
-#endif
+#define nns_edge_logi(...) nns_edge_print_log (NNS_EDGE_LOG_INFO, __VA_ARGS__)
+#define nns_edge_logw(...) nns_edge_print_log (NNS_EDGE_LOG_WARNING, __VA_ARGS__)
+#define nns_edge_loge(...) nns_edge_print_log (NNS_EDGE_LOG_ERROR, __VA_ARGS__)
+#define nns_edge_logd(...) nns_edge_print_log (NNS_EDGE_LOG_DEBUG, __VA_ARGS__)
+#define nns_edge_logf(...) nns_edge_print_log (NNS_EDGE_LOG_FATAL, __VA_ARGS__)
 
 #ifdef __cplusplus
 }
index d09174a4b253f61ebbb022a88b00c54b9aac3946..f19e3f12d28ea0f32e1f43658d80ee29edeed465 100644 (file)
@@ -12,6 +12,7 @@
 
 #define _GNU_SOURCE
 #include <stdio.h>
+#include <stdarg.h>
 
 #include "nnstreamer-edge-log.h"
 #include "nnstreamer-edge-util.h"
index 63aef0ba3d49c6c30fdbae57c9c50f632ac3870f..33ffc4d643fbf079be14c97bfbe8ab59e49d5934 100644 (file)
@@ -57,11 +57,12 @@ ASRCS               =
 CSRCS          = src/libnnstreamer-edge/nnstreamer-edge-data.c \
                src/libnnstreamer-edge/nnstreamer-edge-event.c \
                src/libnnstreamer-edge/nnstreamer-edge-internal.c \
+               src/libnnstreamer-edge/nnstreamer-edge-log.c \
                src/libnnstreamer-edge/nnstreamer-edge-metadata.c \
                src/libnnstreamer-edge/nnstreamer-edge-queue.c \
                src/libnnstreamer-edge/nnstreamer-edge-util.c
 
-CFLAGS += -I ./include
+CFLAGS += -I ./include -DDEBUG=0
 
 # TODO Include sources - Paho MQTT and AITT library.
 # Paho MQTT library