37 #if defined(USE_RDK_LOGGER)
41 { FATAL_LEVEL, RDK_LOG_FATAL }
42 ,{ ERROR_LEVEL, RDK_LOG_ERROR }
43 ,{ WARNING_LEVEL, RDK_LOG_WARN }
44 ,{ METRIC_LEVEL, RDK_LOG_INFO }
45 ,{ INFO_LEVEL, RDK_LOG_INFO }
46 ,{ VERBOSE_LEVEL, RDK_LOG_DEBUG }
47 ,{ TRACE_LEVEL, RDK_LOG_TRACE1 }
52 { FATAL_LEVEL,
"Fatal" }
53 ,{ ERROR_LEVEL,
"Error" }
54 ,{ WARNING_LEVEL,
"Warning" }
55 ,{ METRIC_LEVEL,
"Metric" }
56 ,{ INFO_LEVEL,
"Info" }
57 ,{ VERBOSE_LEVEL,
"Verbose" }
58 ,{ TRACE_LEVEL,
"Trace" }
62 #if defined(USE_RDK_LOGGER)
63 static rdk_LogLevel convertGstDebugLevelToRdkLogLevel(GstDebugLevel level)
67 case GST_LEVEL_ERROR :
69 case GST_LEVEL_WARNING :
71 case GST_LEVEL_FIXME :
72 return RDK_LOG_NOTICE;
75 case GST_LEVEL_DEBUG :
79 return RDK_LOG_TRACE1;
83 static void gstLogFunction(GstDebugCategory*, GstDebugLevel level,
const gchar*,
84 const gchar*, gint, GObject*, GstDebugMessage* message, gpointer)
86 const char* format =
"[GStreamer] %s\n";
87 const gchar* text = gst_debug_message_get(message);
88 #if defined(USE_RDK_LOGGER)
89 rdk_LogLevel rll = convertGstDebugLevelToRdkLogLevel(level);
90 RDK_LOG(rll,
"LOG.RDK.RMFBASE", format, text);
93 fprintf(stdout, format, text);
98 static void rtRemoteLogHandler(rtLogLevel rtLevel,
const char* file,
int line,
int threadId,
char* message)
103 case RT_LOG_DEBUG: level = VERBOSE_LEVEL;
break;
104 case RT_LOG_INFO: level = INFO_LEVEL;
break;
105 case RT_LOG_WARN: level = WARNING_LEVEL;
break;
106 case RT_LOG_ERROR: level = ERROR_LEVEL;
break;
107 case RT_LOG_FATAL: level = FATAL_LEVEL;
break;
108 default: level = VERBOSE_LEVEL;
break;
110 if(level <= sLogLevel)
111 log(level,
"rtlog", file, line,
"tid(%d): %s", threadId, message);
116 #if defined(USE_RDK_LOGGER)
120 sLogLevel = INFO_LEVEL;
122 char* value = getenv(
"RDKMEDIAPLAYER_LOG_LEVEL");
125 sLogLevel = atoi(value);
126 if(sLogLevel < FATAL_LEVEL)
127 sLogLevel = FATAL_LEVEL;
128 else if(sLogLevel > TRACE_LEVEL)
129 sLogLevel = TRACE_LEVEL;
132 int rtLevel = RT_LOG_FATAL;
133 char* value2 = getenv(
"RDKMEDIAPLAYER_RT_LOG_LEVEL");
136 rtLevel = atoi(value2);
137 if(rtLevel < RT_LOG_FATAL)
138 rtLevel = RT_LOG_FATAL;
139 else if(rtLevel > RT_LOG_DEBUG)
140 rtLevel = RT_LOG_DEBUG;
142 rtLogSetLogHandler(rtRemoteLogHandler);
143 rtLogSetLevel((rtLogLevel)rtLevel);
145 LOG_INFO(
"log level=%d rt=%d", sLogLevel, rtLevel);
148 if (gst_debug_get_default_threshold() < GST_LEVEL_WARNING)
149 gst_debug_set_default_threshold(GST_LEVEL_WARNING);
150 gst_debug_remove_log_function(gst_debug_log_default);
151 gst_debug_add_log_function(&gstLogFunction, 0, 0);
154 #define FMT_MSG_SIZE (4096)
156 #if defined(USE_RDK_LOGGER)
158 void log(LogLevel level,
162 const char* format, ...){
166 char formatted_string[FMT_MSG_SIZE];
167 char formatted_string2[FMT_MSG_SIZE];
169 va_start(argptr, format);
170 vsnprintf(formatted_string, FMT_MSG_SIZE, format, argptr);
171 errno_t safec_rc =sprintf_s(formatted_string2,
sizeof(formatted_string2),
"%s:%s:%d %s", func,
185 const char* log_str = (METRIC_LEVEL == level)
188 RDK_LOG(levelMap[
static_cast<int>(level)].to,
193 if (FATAL_LEVEL == level)
199 static char* timestamp(
char* buff);
201 void log(LogLevel level,
205 const char* format, ...){
207 if (sLogLevel >= level) {
209 char formatted_string[FMT_MSG_SIZE];
211 va_start(argptr, format);
212 vsnprintf(formatted_string, FMT_MSG_SIZE, format, argptr);
215 char buff[0xFF] = {0};
216 fprintf(stdout,
"%s [%s] %s:%s:%d %s",
218 levelMap[
static_cast<int>(level)].to,
219 func, basename(file), line,
222 fprintf(stdout,
"\n");
225 if (FATAL_LEVEL == level)
230 static char* timestamp(
char* buff) {
231 struct timespec spec;
234 clock_gettime(CLOCK_REALTIME, &spec);
235 gmtime_r(&spec.tv_sec, &tm);
236 long ms = spec.tv_nsec / 1.0e6;
238 errno_t safec_rc = sprintf_s(buff,0xFF,
"%02d%02d%02d-%02d:%02d:%02d.%03ld",
239 tm.tm_year + (1900-2000),