X-Git-Url: https://code.delx.au/pulseaudio/blobdiff_plain/1bc62d5ec671bf3edab5263fdc8015c0a701ce81..33a88fbfdee773b1473cb5339540d79809363bdc:/src/pulsecore/log.h diff --git a/src/pulsecore/log.h b/src/pulsecore/log.h index bf0e75f5..ad04e7bd 100644 --- a/src/pulsecore/log.h +++ b/src/pulsecore/log.h @@ -1,21 +1,22 @@ #ifndef foologhfoo #define foologhfoo -/* $Id$ */ - /*** This file is part of PulseAudio. - + + Copyright 2004-2006 Lennart Poettering + Copyright 2006 Pierre Ossman for Cendio AB + 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 WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU Lesser General Public License along with PulseAudio; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 @@ -24,7 +25,9 @@ #include #include -#include + +#include +#include /* A simple logging subsystem */ @@ -32,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 { @@ -45,14 +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); -/* 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, void (*func)(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 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, @@ -60,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, @@ -68,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 @@ -80,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 @@ -101,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