Improve logging

This commit is contained in:
Wim Taymans 2017-01-19 18:53:45 +01:00
parent 0398f997d7
commit e92e1acec4
4 changed files with 44 additions and 23 deletions

View file

@ -21,7 +21,9 @@
#include <pinos/client/log.h> #include <pinos/client/log.h>
SpaLogLevel pinos_log_level = SPA_LOG_LEVEL_DEBUG; #define DEFAULT_LOG_LEVEL SPA_LOG_LEVEL_ERROR
SpaLogLevel pinos_log_level = DEFAULT_LOG_LEVEL;
static void static void
do_logv (SpaLog *log, do_logv (SpaLog *log,
@ -67,7 +69,7 @@ do_log (SpaLog *log,
static SpaLog log = { static SpaLog log = {
sizeof (SpaLog), sizeof (SpaLog),
NULL, NULL,
SPA_LOG_LEVEL_DEBUG, DEFAULT_LOG_LEVEL,
do_log, do_log,
do_logv, do_logv,
}; };
@ -78,6 +80,12 @@ pinos_log_get (void)
return &log; return &log;
} }
void
pinos_log_set_level (SpaLogLevel level)
{
pinos_log_level = level;
log.level = level;
}
void void
pinos_log_log (SpaLogLevel level, pinos_log_log (SpaLogLevel level,
@ -86,7 +94,7 @@ pinos_log_log (SpaLogLevel level,
const char *func, const char *func,
const char *fmt, ...) const char *fmt, ...)
{ {
if (log.level >= level) { if (SPA_UNLIKELY (pinos_log_level_enabled (level))) {
va_list args; va_list args;
va_start (args, fmt); va_start (args, fmt);
do_logv (&log, level, file, line, func, fmt, args); do_logv (&log, level, file, line, func, fmt, args);
@ -102,7 +110,7 @@ pinos_log_logv (SpaLogLevel level,
const char *fmt, const char *fmt,
va_list args) va_list args)
{ {
if (log.level >= level) { if (SPA_UNLIKELY (pinos_log_level_enabled (level))) {
do_logv (&log, level, file, line, func, fmt, args); do_logv (&log, level, file, line, func, fmt, args);
} }
} }

View file

@ -30,6 +30,7 @@ extern SpaLogLevel pinos_log_level;
SpaLog * pinos_log_get (void); SpaLog * pinos_log_get (void);
void pinos_log_set_level (SpaLogLevel level);
void pinos_log_log (SpaLogLevel level, void pinos_log_log (SpaLogLevel level,
const char *file, const char *file,
@ -43,10 +44,12 @@ void pinos_log_logv (SpaLogLevel level,
const char *fmt, const char *fmt,
va_list args) SPA_PRINTF_FUNC(5, 0); va_list args) SPA_PRINTF_FUNC(5, 0);
#define pinos_log_level_enabled(lev) (pinos_log_level >= (lev))
#if __STDC_VERSION__ >= 199901L #if __STDC_VERSION__ >= 199901L
#define pinos_log_logc(lev,...) \ #define pinos_log_logc(lev,...) \
if (SPA_UNLIKELY (lev <= pinos_log_level)) \ if (SPA_UNLIKELY (pinos_log_level_enabled (lev))) \
pinos_log_log(lev,__VA_ARGS__) pinos_log_log(lev,__VA_ARGS__)
#define pinos_log_error(...) pinos_log_logc(SPA_LOG_LEVEL_ERROR,__FILE__,__LINE__,__func__,__VA_ARGS__) #define pinos_log_error(...) pinos_log_logc(SPA_LOG_LEVEL_ERROR,__FILE__,__LINE__,__func__,__VA_ARGS__)
@ -60,7 +63,7 @@ void pinos_log_logv (SpaLogLevel level,
#define PINOS_LOG_FUNC(name,lev) \ #define PINOS_LOG_FUNC(name,lev) \
static inline void pinos_log_##name (const char *format, ...) \ static inline void pinos_log_##name (const char *format, ...) \
{ \ { \
if (lev >= pinos_log_level) { \ if (SPA_UNLIKELY (pinos_log_level_enabled (lev))) \
va_list varargs; \ va_list varargs; \
va_start (varargs, format); \ va_start (varargs, format); \
pinos_log_logv (lev,__FILE__,__LINE__,__func__,format,varargs); \ pinos_log_logv (lev,__FILE__,__LINE__,__func__,format,varargs); \

View file

@ -35,6 +35,10 @@
void void
pinos_init (int *argc, char **argv[]) pinos_init (int *argc, char **argv[])
{ {
const char *str;
if ((str = getenv ("PINOS_DEBUG")))
pinos_log_set_level (atoi (str));
} }
const char * const char *

View file

@ -102,6 +102,7 @@ again:
} }
} }
pinos_log_debug ("Try filter: %p", filter); pinos_log_debug ("Try filter: %p", filter);
if (pinos_log_level_enabled (SPA_LOG_LEVEL_DEBUG))
spa_debug_format (filter); spa_debug_format (filter);
if ((res = spa_node_port_enum_formats (this->output->node->node, if ((res = spa_node_port_enum_formats (this->output->node->node,
@ -118,7 +119,9 @@ again:
goto error; goto error;
} }
pinos_log_debug ("Got filtered:"); pinos_log_debug ("Got filtered:");
if (pinos_log_level_enabled (SPA_LOG_LEVEL_DEBUG))
spa_debug_format (format); spa_debug_format (format);
spa_format_fixate (format); spa_format_fixate (format);
} else if (in_state == SPA_NODE_STATE_CONFIGURE && out_state > SPA_NODE_STATE_CONFIGURE) { } else if (in_state == SPA_NODE_STATE_CONFIGURE && out_state > SPA_NODE_STATE_CONFIGURE) {
/* only input needs format */ /* only input needs format */
@ -142,6 +145,7 @@ again:
return SPA_RESULT_OK; return SPA_RESULT_OK;
pinos_log_debug ("link %p: doing set format", this); pinos_log_debug ("link %p: doing set format", this);
if (pinos_log_level_enabled (SPA_LOG_LEVEL_DEBUG))
spa_debug_format (format); spa_debug_format (format);
if (out_state == SPA_NODE_STATE_CONFIGURE) { if (out_state == SPA_NODE_STATE_CONFIGURE) {
@ -371,8 +375,10 @@ do_allocation (PinosLink *this, SpaNodeState in_state, SpaNodeState out_state)
asprintf (&error, "error get input port info: %d", res); asprintf (&error, "error get input port info: %d", res);
goto error; goto error;
} }
if (pinos_log_level_enabled (SPA_LOG_LEVEL_DEBUG)) {
spa_debug_port_info (oinfo); spa_debug_port_info (oinfo);
spa_debug_port_info (iinfo); spa_debug_port_info (iinfo);
}
in_flags = iinfo->flags; in_flags = iinfo->flags;
out_flags = oinfo->flags; out_flags = oinfo->flags;