diff --git a/pinos/client/log.c b/pinos/client/log.c index 9b08099f3..e0d73064b 100644 --- a/pinos/client/log.c +++ b/pinos/client/log.c @@ -21,7 +21,9 @@ #include -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 do_logv (SpaLog *log, @@ -67,7 +69,7 @@ do_log (SpaLog *log, static SpaLog log = { sizeof (SpaLog), NULL, - SPA_LOG_LEVEL_DEBUG, + DEFAULT_LOG_LEVEL, do_log, do_logv, }; @@ -78,6 +80,12 @@ pinos_log_get (void) return &log; } +void +pinos_log_set_level (SpaLogLevel level) +{ + pinos_log_level = level; + log.level = level; +} void pinos_log_log (SpaLogLevel level, @@ -86,7 +94,7 @@ pinos_log_log (SpaLogLevel level, const char *func, const char *fmt, ...) { - if (log.level >= level) { + if (SPA_UNLIKELY (pinos_log_level_enabled (level))) { va_list args; va_start (args, fmt); do_logv (&log, level, file, line, func, fmt, args); @@ -102,7 +110,7 @@ pinos_log_logv (SpaLogLevel level, const char *fmt, va_list args) { - if (log.level >= level) { + if (SPA_UNLIKELY (pinos_log_level_enabled (level))) { do_logv (&log, level, file, line, func, fmt, args); } } diff --git a/pinos/client/log.h b/pinos/client/log.h index 0f48cffa6..20289e7da 100644 --- a/pinos/client/log.h +++ b/pinos/client/log.h @@ -28,25 +28,28 @@ extern "C" { 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, - const char *file, - int line, - const char *func, - const char *fmt, ...) SPA_PRINTF_FUNC(5, 6); -void pinos_log_logv (SpaLogLevel level, - const char *file, - int line, - const char *func, - const char *fmt, - va_list args) SPA_PRINTF_FUNC(5, 0); +void pinos_log_log (SpaLogLevel level, + const char *file, + int line, + const char *func, + const char *fmt, ...) SPA_PRINTF_FUNC(5, 6); +void pinos_log_logv (SpaLogLevel level, + const char *file, + int line, + const char *func, + const char *fmt, + va_list args) SPA_PRINTF_FUNC(5, 0); + +#define pinos_log_level_enabled(lev) (pinos_log_level >= (lev)) #if __STDC_VERSION__ >= 199901L #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__) #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) \ 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_start (varargs, format); \ pinos_log_logv (lev,__FILE__,__LINE__,__func__,format,varargs); \ diff --git a/pinos/client/pinos.c b/pinos/client/pinos.c index ed34f36cd..76f7a0482 100644 --- a/pinos/client/pinos.c +++ b/pinos/client/pinos.c @@ -35,6 +35,10 @@ void pinos_init (int *argc, char **argv[]) { + const char *str; + + if ((str = getenv ("PINOS_DEBUG"))) + pinos_log_set_level (atoi (str)); } const char * diff --git a/pinos/server/link.c b/pinos/server/link.c index 52e77205f..254fed596 100644 --- a/pinos/server/link.c +++ b/pinos/server/link.c @@ -102,7 +102,8 @@ again: } } pinos_log_debug ("Try filter: %p", filter); - spa_debug_format (filter); + if (pinos_log_level_enabled (SPA_LOG_LEVEL_DEBUG)) + spa_debug_format (filter); if ((res = spa_node_port_enum_formats (this->output->node->node, SPA_DIRECTION_OUTPUT, @@ -118,7 +119,9 @@ again: goto error; } pinos_log_debug ("Got filtered:"); - spa_debug_format (format); + if (pinos_log_level_enabled (SPA_LOG_LEVEL_DEBUG)) + spa_debug_format (format); + spa_format_fixate (format); } else if (in_state == SPA_NODE_STATE_CONFIGURE && out_state > SPA_NODE_STATE_CONFIGURE) { /* only input needs format */ @@ -142,7 +145,8 @@ again: return SPA_RESULT_OK; pinos_log_debug ("link %p: doing set format", this); - spa_debug_format (format); + if (pinos_log_level_enabled (SPA_LOG_LEVEL_DEBUG)) + spa_debug_format (format); if (out_state == SPA_NODE_STATE_CONFIGURE) { pinos_log_debug ("link %p: doing set format on output", this); @@ -371,8 +375,10 @@ do_allocation (PinosLink *this, SpaNodeState in_state, SpaNodeState out_state) asprintf (&error, "error get input port info: %d", res); goto error; } - spa_debug_port_info (oinfo); - spa_debug_port_info (iinfo); + if (pinos_log_level_enabled (SPA_LOG_LEVEL_DEBUG)) { + spa_debug_port_info (oinfo); + spa_debug_port_info (iinfo); + } in_flags = iinfo->flags; out_flags = oinfo->flags;