From: Jaeyun Date: Thu, 20 Oct 2022 08:39:37 +0000 (+0900) Subject: [Log] set log level X-Git-Tag: accepted/tizen/unified/20221115.172904~13 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a641370bedfa0adfbedadbd831a66e0af0ddc56b;p=platform%2Fupstream%2Fnnstreamer-edge.git [Log] set log level Add new function to set log level. Signed-off-by: Jaeyun --- diff --git a/include/nnstreamer-edge.h b/include/nnstreamer-edge.h index 0d11152..0f8367d 100644 --- a/include/nnstreamer-edge.h +++ b/include/nnstreamer-edge.h @@ -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 */ diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e1354ce..ae34073 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -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 ) diff --git a/src/libnnstreamer-edge/nnstreamer-edge-internal.c b/src/libnnstreamer-edge/nnstreamer-edge-internal.c index 965be26..8f8274c 100644 --- a/src/libnnstreamer-edge/nnstreamer-edge-internal.c +++ b/src/libnnstreamer-edge/nnstreamer-edge-internal.c @@ -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 index 0000000..d7a6b82 --- /dev/null +++ b/src/libnnstreamer-edge/nnstreamer-edge-log.c @@ -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 + * @bug No known bugs except for NYI items. + */ + +#include +#include "nnstreamer-edge-log.h" + +#if defined(__TIZEN__) +#include + +#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 + +#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); +} diff --git a/src/libnnstreamer-edge/nnstreamer-edge-log.h b/src/libnnstreamer-edge/nnstreamer-edge-log.h index a1422b5..3a81b65 100644 --- a/src/libnnstreamer-edge/nnstreamer-edge-log.h +++ b/src/libnnstreamer-edge/nnstreamer-edge-log.h @@ -8,13 +8,13 @@ * @see https://github.com/nnstreamer/nnstreamer-edge * @author Jaeyun Jung * @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 -#include +#include "nnstreamer-edge.h" #ifdef __cplusplus extern "C" { @@ -22,68 +22,16 @@ extern "C" { #define TAG_NAME "nnstreamer-edge" -#if defined(__TIZEN__) -#include - -#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 - -#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 } diff --git a/src/libnnstreamer-edge/nnstreamer-edge-util.c b/src/libnnstreamer-edge/nnstreamer-edge-util.c index d09174a..f19e3f1 100644 --- a/src/libnnstreamer-edge/nnstreamer-edge-util.c +++ b/src/libnnstreamer-edge/nnstreamer-edge-util.c @@ -12,6 +12,7 @@ #define _GNU_SOURCE #include +#include #include "nnstreamer-edge-log.h" #include "nnstreamer-edge-util.h" diff --git a/tools/build_TizenRT/Makefile b/tools/build_TizenRT/Makefile index 63aef0b..33ffc4d 100644 --- a/tools/build_TizenRT/Makefile +++ b/tools/build_TizenRT/Makefile @@ -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