X-Git-Url: https://code.delx.au/pulseaudio/blobdiff_plain/11cc072a1eef2c8b26e9e642b8bf64c63da8b8ec..33a88fbfdee773b1473cb5339540d79809363bdc:/src/pulsecore/log.h diff --git a/src/pulsecore/log.h b/src/pulsecore/log.h index 633227f3..ad04e7bd 100644 --- a/src/pulsecore/log.h +++ b/src/pulsecore/log.h @@ -9,7 +9,7 @@ PulseAudio is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published - by the Free Software Foundation; either version 2 of the License, + by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. PulseAudio is distributed in the hope that it will be useful, but @@ -25,6 +25,8 @@ #include #include + +#include #include /* A simple logging subsystem */ @@ -33,8 +35,9 @@ typedef enum pa_log_target { PA_LOG_STDERR, /* default */ PA_LOG_SYSLOG, - PA_LOG_USER, /* to user specified function */ - PA_LOG_NULL /* to /dev/null */ + PA_LOG_NULL, /* to /dev/null */ + PA_LOG_FD, /* to a file descriptor, e.g. a char device */ + PA_LOG_TARGET_MAX } pa_log_target_t; typedef enum pa_log_level { @@ -46,16 +49,41 @@ typedef enum pa_log_level { PA_LOG_LEVEL_MAX } pa_log_level_t; +typedef enum pa_log_flags { + PA_LOG_COLORS = 0x01, /* Show colorful output */ + PA_LOG_PRINT_TIME = 0x02, /* Show time */ + PA_LOG_PRINT_FILE = 0x04, /* Show source file */ + PA_LOG_PRINT_META = 0x08, /* Show extended locaton information */ + PA_LOG_PRINT_LEVEL = 0x10, /* Show log level prefix */ +} pa_log_flags_t; + +typedef enum pa_log_merge { + PA_LOG_SET, + PA_LOG_UNSET, + PA_LOG_RESET +} pa_log_merge_t; + /* Set an identification for the current daemon. Used when logging to syslog. */ void pa_log_set_ident(const char *p); -typedef void (*pa_log_func_t)(pa_log_level_t t, const char*s); +/* Set a log target. */ +void pa_log_set_target(pa_log_target_t t); + +/* Maximal log level */ +void pa_log_set_level(pa_log_level_t l); -/* Set another log target. If t is PA_LOG_USER you may specify a function that is called every log string */ -void pa_log_set_target(pa_log_target_t t, pa_log_func_t func); +/* Set flags */ +void pa_log_set_flags(pa_log_flags_t flags, pa_log_merge_t merge); -/* Minimal log level */ -void pa_log_set_maximal_level(pa_log_level_t l); +/* Set the file descriptor of the logging device. + Daemon conf is in charge of opening this device */ +void pa_log_set_fd(int fd); + +/* Enable backtrace */ +void pa_log_set_show_backtrace(unsigned nlevels); + +/* Skip the first backtrace frames */ +void pa_log_set_skip_backtrace(unsigned nlevels); void pa_log_level_meta( pa_log_level_t level, @@ -63,6 +91,7 @@ void pa_log_level_meta( int line, const char *func, const char *format, ...) PA_GCC_PRINTF_ATTR(5,6); + void pa_log_levelv_meta( pa_log_level_t level, const char*file, @@ -71,8 +100,14 @@ void pa_log_levelv_meta( const char *format, va_list ap); -void pa_log_level(pa_log_level_t level, const char *format, ...) PA_GCC_PRINTF_ATTR(2,3); -void pa_log_levelv(pa_log_level_t level, const char *format, va_list ap); +void pa_log_level( + pa_log_level_t level, + const char *format, ...) PA_GCC_PRINTF_ATTR(2,3); + +void pa_log_levelv( + pa_log_level_t level, + const char *format, + va_list ap); #if __STDC_VERSION__ >= 199901L @@ -83,6 +118,7 @@ void pa_log_levelv(pa_log_level_t level, const char *format, va_list ap); #define pa_log_notice(...) pa_log_level_meta(PA_LOG_NOTICE, __FILE__, __LINE__, __func__, __VA_ARGS__) #define pa_log_warn(...) pa_log_level_meta(PA_LOG_WARN, __FILE__, __LINE__, __func__, __VA_ARGS__) #define pa_log_error(...) pa_log_level_meta(PA_LOG_ERROR, __FILE__, __LINE__, __func__, __VA_ARGS__) +#define pa_logl(level, ...) pa_log_level_meta(level, __FILE__, __LINE__, __func__, __VA_ARGS__) #else @@ -104,4 +140,6 @@ LOG_FUNC(error, PA_LOG_ERROR) #define pa_log pa_log_error +pa_bool_t pa_log_ratelimit(pa_log_level_t level); + #endif