25 #ifndef SPA_LOG_IMPL_H
26 #define SPA_LOG_IMPL_H
51 static const char *
const levels[] = {
"-",
"E",
"W",
"I",
"D",
"T" };
53 const char *basename = strrchr(file,
'/');
54 char text[512], location[1024];
55 char topicstr[32] = {0};
62 if (topic && topic->topic)
63 snprintf(topicstr,
sizeof(topicstr),
" %s ", topic->topic);
64 vsnprintf(text,
sizeof(text), fmt, args);
65 snprintf(location,
sizeof(location),
"[%s]%s[%s:%i %s()] %s\n",
68 basename, line, func, text);
69 fputs(location, stderr);
103 const
char *fmt, ...)
116 #define SPA_LOG_IMPL_DEFINE(name) \
118 struct spa_log log; \
119 struct spa_log_methods methods; \
122 #define SPA_LOG_IMPL_INIT(name) \
123 { { { SPA_TYPE_INTERFACE_Log, SPA_VERSION_LOG, \
124 SPA_CALLBACKS_INIT(&(name).methods, &(name)) }, \
125 SPA_LOG_LEVEL_INFO, }, \
126 { SPA_VERSION_LOG_METHODS, \
130 spa_log_impl_logtv, \
133 #define SPA_LOG_IMPL(name) \
134 SPA_LOG_IMPL_DEFINE(name) = SPA_LOG_IMPL_INIT(name)
spa_log_level
Definition: log.h:65
static void spa_log_impl_log(void *object, enum spa_log_level level, const char *file, int line, const char *func, const char *fmt,...)
Definition: log-impl.h:103
static void spa_log_impl_topic_init(void *object, struct spa_log_topic *topic)
Definition: log-impl.h:116
static void spa_log_impl_logtv(void *object, enum spa_log_level level, const struct spa_log_topic *topic, const char *file, int line, const char *func, const char *fmt, va_list args)
Definition: log-impl.h:47
static void spa_log_impl_logt(void *object, enum spa_log_level level, const struct spa_log_topic *topic, const char *file, int line, const char *func, const char *fmt,...)
Definition: log-impl.h:77
static void spa_log_impl_logv(void *object, enum spa_log_level level, const char *file, int line, const char *func, const char *fmt, va_list args)
Definition: log-impl.h:91
#define SPA_PRINTF_FUNC(fmt, arg1)
Definition: defs.h:289
Identifier for a topic.
Definition: log.h:103