PipeWire 1.1.0
|
Logging interface. More...
Files | |
file | log-impl.h |
spa/support/log-impl.h | |
file | log.h |
spa/support/log.h | |
Data Structures | |
struct | spa_log |
struct | spa_log_topic |
Identifier for a topic. More... | |
struct | spa_log_topic_enum |
Enumeration of log topics in a plugin. More... | |
struct | spa_log_methods |
Enumerations | |
enum | spa_log_level { SPA_LOG_LEVEL_NONE = 0 , SPA_LOG_LEVEL_ERROR , SPA_LOG_LEVEL_WARN , SPA_LOG_LEVEL_INFO , SPA_LOG_LEVEL_DEBUG , SPA_LOG_LEVEL_TRACE } |
Macros | |
#define | SPA_LOG_IMPL_DEFINE(name) |
#define | SPA_LOG_IMPL_INIT(name) |
#define | SPA_LOG_IMPL(name) SPA_LOG_IMPL_DEFINE(name) = SPA_LOG_IMPL_INIT(name) |
#define | SPA_LOG_TOPIC_DEFAULT NULL |
The default log topic. | |
#define | SPA_TYPE_INTERFACE_Log SPA_TYPE_INFO_INTERFACE_BASE "Log" |
The Log interface. | |
#define | SPA_VERSION_LOG 0 |
the version of this log. | |
#define | SPA_VERSION_LOG_TOPIC 0 |
#define | SPA_VERSION_LOG_TOPIC_ENUM 0 |
#define | SPA_VERSION_LOG_METHODS 1 |
#define | SPA_LOG_TOPIC(v, t) (struct spa_log_topic){ .version = (v), .topic = (t)} |
#define | spa_log_logt(l, lev, topic, ...) |
#define | spa_log_logtv(l, lev, topic, ...) |
#define | spa_logt_lev(l, lev, t, ...) spa_log_logt(l,lev,t,__FILE__,__LINE__,__func__,__VA_ARGS__) |
#define | spa_log_lev(l, lev, ...) spa_logt_lev(l,lev,SPA_LOG_TOPIC_DEFAULT,__VA_ARGS__) |
#define | spa_log_log(l, lev, ...) spa_log_logt(l,lev,SPA_LOG_TOPIC_DEFAULT,__VA_ARGS__) |
#define | spa_log_logv(l, lev, ...) spa_log_logtv(l,lev,SPA_LOG_TOPIC_DEFAULT,__VA_ARGS__) |
#define | spa_log_error(l, ...) spa_log_lev(l,SPA_LOG_LEVEL_ERROR,__VA_ARGS__) |
#define | spa_log_warn(l, ...) spa_log_lev(l,SPA_LOG_LEVEL_WARN,__VA_ARGS__) |
#define | spa_log_info(l, ...) spa_log_lev(l,SPA_LOG_LEVEL_INFO,__VA_ARGS__) |
#define | spa_log_debug(l, ...) spa_log_lev(l,SPA_LOG_LEVEL_DEBUG,__VA_ARGS__) |
#define | spa_log_trace(l, ...) spa_log_lev(l,SPA_LOG_LEVEL_TRACE,__VA_ARGS__) |
#define | spa_logt_error(l, t, ...) spa_logt_lev(l,SPA_LOG_LEVEL_ERROR,t,__VA_ARGS__) |
#define | spa_logt_warn(l, t, ...) spa_logt_lev(l,SPA_LOG_LEVEL_WARN,t,__VA_ARGS__) |
#define | spa_logt_info(l, t, ...) spa_logt_lev(l,SPA_LOG_LEVEL_INFO,t,__VA_ARGS__) |
#define | spa_logt_debug(l, t, ...) spa_logt_lev(l,SPA_LOG_LEVEL_DEBUG,t,__VA_ARGS__) |
#define | spa_logt_trace(l, t, ...) spa_logt_lev(l,SPA_LOG_LEVEL_TRACE,t,__VA_ARGS__) |
#define | spa_log_trace_fp(l, ...) spa_log_lev(l,SPA_LOG_LEVEL_TRACE,__VA_ARGS__) |
#define | SPA_LOG_TOPIC_ENUM_NAME "spa_log_topic_enum" |
Name of the symbol indicating a spa_log_topic_enum enumerating the static log topics in a plugin,. | |
#define | SPA_LOG_TOPIC_ENUM_DEFINE(s, e) |
Define the symbol for SPA_LOG_TOPIC_ENUM_NAME. | |
#define | SPA_LOG_TOPIC_REGISTER(v) |
Magically register a statically defined spa_log_topic into the log topic enumeration for a plugin. | |
#define | SPA_LOG_TOPIC_DEFINE(var, name) |
Define and magically register a spa_log_topic. | |
#define | SPA_LOG_TOPIC_DEFINE_STATIC(var, name) |
Define and magically register a spa_log_topic with static scope. | |
#define | SPA_LOG_TOPIC_ENUM_DEFINE_REGISTERED |
Do SPA_LOG_TOPIC_ENUM_DEFINE for the auto-registered spa_log_topic in the plugin. | |
#define | SPA_KEY_LOG_LEVEL "log.level" |
keys can be given when initializing the logger handle | |
#define | SPA_KEY_LOG_COLORS "log.colors" |
enable colors in the logger, set to "force" to enable colors even when not logging to a terminal | |
#define | SPA_KEY_LOG_FILE "log.file" |
log to the specified file instead of stderr. | |
#define | SPA_KEY_LOG_TIMESTAMP "log.timestamp" |
log timestamps | |
#define | SPA_KEY_LOG_LINE "log.line" |
log file and line numbers | |
#define | SPA_KEY_LOG_PATTERNS "log.patterns" |
Spa:String:JSON array of [ {"pattern" : level}, ... ]. | |
Functions | |
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) |
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,...) |
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) |
static void | spa_log_impl_log (void *object, enum spa_log_level level, const char *file, int line, const char *func, const char *fmt,...) |
static void | spa_log_impl_topic_init (void *object, struct spa_log_topic *topic 1) |
static void | spa_log_topic_init (struct spa_log *log, struct spa_log_topic *topic) |
static bool | spa_log_level_topic_enabled (const struct spa_log *log, const struct spa_log_topic *topic, enum spa_log_level level) |
Logging interface.
enum spa_log_level |
#define SPA_LOG_IMPL_DEFINE | ( | name | ) |
#define SPA_LOG_IMPL_INIT | ( | name | ) |
#define SPA_LOG_IMPL | ( | name | ) | SPA_LOG_IMPL_DEFINE(name) = SPA_LOG_IMPL_INIT(name) |
#define SPA_LOG_TOPIC_DEFAULT NULL |
The default log topic.
Redefine this in your code to allow for the spa_log_* macros to work correctly, e.g:
#define SPA_TYPE_INTERFACE_Log SPA_TYPE_INFO_INTERFACE_BASE "Log" |
The Log interface.
#define SPA_VERSION_LOG 0 |
the version of this log.
This can be used to expand this structure in the future
#define SPA_VERSION_LOG_TOPIC 0 |
#define SPA_VERSION_LOG_TOPIC_ENUM 0 |
#define SPA_VERSION_LOG_METHODS 1 |
#define SPA_LOG_TOPIC | ( | v, | |
t | |||
) | (struct spa_log_topic){ .version = (v), .topic = (t)} |
#define spa_log_logt | ( | l, | |
lev, | |||
topic, | |||
... | |||
) |
#define spa_log_logtv | ( | l, | |
lev, | |||
topic, | |||
... | |||
) |
#define spa_logt_lev | ( | l, | |
lev, | |||
t, | |||
... | |||
) | spa_log_logt(l,lev,t,__FILE__,__LINE__,__func__,__VA_ARGS__) |
#define spa_log_lev | ( | l, | |
lev, | |||
... | |||
) | spa_logt_lev(l,lev,SPA_LOG_TOPIC_DEFAULT,__VA_ARGS__) |
#define spa_log_log | ( | l, | |
lev, | |||
... | |||
) | spa_log_logt(l,lev,SPA_LOG_TOPIC_DEFAULT,__VA_ARGS__) |
#define spa_log_logv | ( | l, | |
lev, | |||
... | |||
) | spa_log_logtv(l,lev,SPA_LOG_TOPIC_DEFAULT,__VA_ARGS__) |
#define spa_log_error | ( | l, | |
... | |||
) | spa_log_lev(l,SPA_LOG_LEVEL_ERROR,__VA_ARGS__) |
#define spa_log_warn | ( | l, | |
... | |||
) | spa_log_lev(l,SPA_LOG_LEVEL_WARN,__VA_ARGS__) |
#define spa_log_info | ( | l, | |
... | |||
) | spa_log_lev(l,SPA_LOG_LEVEL_INFO,__VA_ARGS__) |
#define spa_log_debug | ( | l, | |
... | |||
) | spa_log_lev(l,SPA_LOG_LEVEL_DEBUG,__VA_ARGS__) |
#define spa_log_trace | ( | l, | |
... | |||
) | spa_log_lev(l,SPA_LOG_LEVEL_TRACE,__VA_ARGS__) |
#define spa_logt_error | ( | l, | |
t, | |||
... | |||
) | spa_logt_lev(l,SPA_LOG_LEVEL_ERROR,t,__VA_ARGS__) |
#define spa_logt_warn | ( | l, | |
t, | |||
... | |||
) | spa_logt_lev(l,SPA_LOG_LEVEL_WARN,t,__VA_ARGS__) |
#define spa_logt_info | ( | l, | |
t, | |||
... | |||
) | spa_logt_lev(l,SPA_LOG_LEVEL_INFO,t,__VA_ARGS__) |
#define spa_logt_debug | ( | l, | |
t, | |||
... | |||
) | spa_logt_lev(l,SPA_LOG_LEVEL_DEBUG,t,__VA_ARGS__) |
#define spa_logt_trace | ( | l, | |
t, | |||
... | |||
) | spa_logt_lev(l,SPA_LOG_LEVEL_TRACE,t,__VA_ARGS__) |
#define spa_log_trace_fp | ( | l, | |
... | |||
) | spa_log_lev(l,SPA_LOG_LEVEL_TRACE,__VA_ARGS__) |
#define SPA_LOG_TOPIC_ENUM_NAME "spa_log_topic_enum" |
Name of the symbol indicating a spa_log_topic_enum enumerating the static log topics in a plugin,.
#define SPA_LOG_TOPIC_ENUM_DEFINE | ( | s, | |
e | |||
) |
Define the symbol for SPA_LOG_TOPIC_ENUM_NAME.
#define SPA_LOG_TOPIC_REGISTER | ( | v | ) |
Magically register a statically defined spa_log_topic into the log topic enumeration for a plugin.
#define SPA_LOG_TOPIC_DEFINE | ( | var, | |
name | |||
) |
Define and magically register a spa_log_topic.
#define SPA_LOG_TOPIC_DEFINE_STATIC | ( | var, | |
name | |||
) |
Define and magically register a spa_log_topic with static scope.
#define SPA_LOG_TOPIC_ENUM_DEFINE_REGISTERED |
Do SPA_LOG_TOPIC_ENUM_DEFINE for the auto-registered spa_log_topic in the plugin.
#define SPA_KEY_LOG_LEVEL "log.level" |
keys can be given when initializing the logger handle
the default log level
#define SPA_KEY_LOG_COLORS "log.colors" |
enable colors in the logger, set to "force" to enable colors even when not logging to a terminal
#define SPA_KEY_LOG_FILE "log.file" |
log to the specified file instead of stderr.
#define SPA_KEY_LOG_TIMESTAMP "log.timestamp" |
log timestamps
#define SPA_KEY_LOG_LINE "log.line" |
log file and line numbers
#define SPA_KEY_LOG_PATTERNS "log.patterns" |
Spa:String:JSON array of [ {"pattern" : level}, ... ].
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |