24#ifndef SPA_API_DEBUG_LOG
26 #define SPA_API_DEBUG_LOG SPA_API_IMPL
28 #define SPA_API_DEBUG_LOG static inline
57#define SPA_LOGF_DEBUG_INIT(_l,_lev,_t,_file,_line,_func) \
58 (struct spa_debug_log_ctx){ { spa_debug_log_log }, _l, _lev, _t, \
61#define SPA_LOGT_DEBUG_INIT(_l,_lev,_t) \
62 SPA_LOGF_DEBUG_INIT(_l,_lev,_t,__FILE__,__LINE__,__func__)
64#define SPA_LOG_DEBUG_INIT(l,lev) \
65 SPA_LOGT_DEBUG_INIT(l,lev,SPA_LOG_TOPIC_DEFAULT)
67#define spa_debug_log_pod(l,lev,indent,info,pod) \
69 struct spa_debug_log_ctx c = SPA_LOG_DEBUG_INIT(l,lev); \
70 if (SPA_UNLIKELY(spa_log_level_topic_enabled(c.log, c.topic, c.level))) \
71 spa_debugc_pod(&c.ctx, indent, info, pod); \
74#define spa_debug_log_format(l,lev,indent,info,format) \
76 struct spa_debug_log_ctx c = SPA_LOG_DEBUG_INIT(l,lev); \
77 if (SPA_UNLIKELY(spa_log_level_topic_enabled(c.log, c.topic, c.level))) \
78 spa_debugc_format(&c.ctx, indent, info, format); \
81#define spa_debug_log_mem(l,lev,indent,data,len) \
83 struct spa_debug_log_ctx c = SPA_LOG_DEBUG_INIT(l,lev); \
84 if (SPA_UNLIKELY(spa_log_level_topic_enabled(c.log, c.topic, c.level))) \
85 spa_debugc_mem(&c.ctx, indent, data, len); \
88#define spa_debug_log_dict(l,lev,indent,dict) \
90 struct spa_debug_log_ctx c = SPA_LOG_DEBUG_INIT(l,lev); \
91 if (SPA_UNLIKELY(spa_log_level_topic_enabled(c.log, c.topic, c.level))) \
92 spa_debugc_dict(&c.ctx, indent, dict); \
95#define spa_debug_log_error_location(l,lev,loc,fmt,...) \
97 struct spa_debug_log_ctx c = SPA_LOG_DEBUG_INIT(l,lev); \
98 if (SPA_UNLIKELY(spa_log_level_topic_enabled(c.log, c.topic, c.level))) { \
99 if (fmt) spa_debugc(&c.ctx, fmt, __VA_ARGS__); \
100 spa_debugc_error_location(&c.ctx, loc); \
104#define spa_debug_log_buffer(l,lev,indent,buffer) \
106 struct spa_debug_log_ctx c = SPA_LOG_DEBUG_INIT(l,lev); \
107 if (SPA_UNLIKELY(spa_log_level_topic_enabled(c.log, c.topic, c.level))) \
108 spa_debugc_buffer(&c.ctx, indent, buffer); \
uint32_t int int const char va_list args
Definition core.h:434
SPA_API_DEBUG_LOG void spa_debug_log_log(struct spa_debug_context *ctx, const char *fmt,...)
Definition log.h:55
const char const char * fmt
Definition json-builder.h:308
spa_log_level
Definition log.h:55
SPA_API_LOG void spa_log_logtv(struct spa_log *l, 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.h:281
#define SPA_CONTAINER_OF(p, t, m)
Definition defs.h:236
#define SPA_PRINTF_FUNC(fmt, arg1)
Definition defs.h:298
#define SPA_API_DEBUG_LOG
Definition log.h:35
const char * func
Definition log.h:51
int line
Definition log.h:50
struct spa_log * log
Definition log.h:46
enum spa_log_level level
Definition log.h:47
struct spa_debug_context ctx
Definition log.h:45
const char * file
Definition log.h:49
const struct spa_log_topic * topic
Definition log.h:48
Identifier for a topic.
Definition log.h:93