[pulseaudio-discuss] [PATCH] pulsecore: Introduce PULSE_LOG_JOURNAL environment variable

David Henningsson david.henningsson at canonical.com
Wed Sep 16 02:36:53 PDT 2015


Due to this patch, my build (of -next) is now broken:

../../src/pulsecore/log.c: In function 'init_defaults':
../../src/pulsecore/log.c:298:31: error: 'PA_LOG_JOURNAL' undeclared 
(first use in this function)
              target_override = PA_LOG_JOURNAL;
                                ^

...probably because I don't HAVE_SYSTEMD_JOURNAL.

I kind of feel it would be better to have PA_LOG_JOURNAL always defined 
than to add ifdefs every where we use it, but I'm open for either 
option. Any opinions?


On 2015-08-14 18:47, Ahmed S. Darwish wrote:
> By introducing such an environment variable, applications using the
> PA client libraries can configure these libraries to send their logs
> directly to the journal.
>
> While client libraries journal logging can be indirectly achieved
> using PULSE_LOG_SYSLOG, this pollutes the journal. Meta data gets
> replicated twice: once in the journal meta fields and once in the
> syslog(3) plain-text message itself.
>
> For attaching any backtraces, also introduce the PA-specific journal
> meta field PULSE_BACKTRACE. This is the recommend journal practice
> instead of appending any furuther data to the logging message itself.
>
> Signed-off-by: Ahmed S. Darwish <darwish.07 at gmail.com>
> ---
>   src/pulse/pulseaudio.h | 8 ++++++++
>   src/pulsecore/log.c    | 7 +++++++
>   2 files changed, 15 insertions(+)
>
> diff --git a/src/pulse/pulseaudio.h b/src/pulse/pulseaudio.h
> index f5c5b0d..5077e3b 100644
> --- a/src/pulse/pulseaudio.h
> +++ b/src/pulse/pulseaudio.h
> @@ -140,6 +140,14 @@
>    *  - `PULSE_LOG_SYSLOG`: If defined, force all client libraries to log
>    *     their output using the syslog(3) mechanism. Default behavior is to
>    *     log all output to stderr.
> + *  - `PULSE_LOG_JOURNAL`: If defined, force all client libraries to log
> + *     their output using the systemd journal. If both `PULSE_LOG_JOURNAL`
> + *     and `PULSE_LOG_SYSLOG` are defined, logging to the systemd journal
> + *     takes a higher precedence. Each message originating library file name
> + *     and function are included by default through the journal fields
> + *     `CODE_FILE`, `CODE_FUNC`, and `CODE_LINE`. Any backtrace attached to
> + *     the logging message is sent through the PulseAudio-specific journal
> + *     field `PULSE_BACKTRACE`.
>    *  - `PULSE_LOG_COLORS`: If defined, enables colored logging output.
>    *  - `PULSE_LOG_TIME`: If defined, include timestamps with each message.
>    *  - `PULSE_LOG_FILE`: If defined, include each message originating file
> diff --git a/src/pulsecore/log.c b/src/pulsecore/log.c
> index 552d416..34ed041 100644
> --- a/src/pulsecore/log.c
> +++ b/src/pulsecore/log.c
> @@ -60,6 +60,7 @@
>   #include "log.h"
>
>   #define ENV_LOG_SYSLOG "PULSE_LOG_SYSLOG"
> +#define ENV_LOG_JOURNAL "PULSE_LOG_JOURNAL"
>   #define ENV_LOG_LEVEL "PULSE_LOG"
>   #define ENV_LOG_COLORS "PULSE_LOG_COLORS"
>   #define ENV_LOG_PRINT_TIME "PULSE_LOG_TIME"
> @@ -293,6 +294,11 @@ static void init_defaults(void) {
>               target_override_set = true;
>           }
>
> +        if (getenv(ENV_LOG_JOURNAL)) {
> +            target_override = PA_LOG_JOURNAL;
> +            target_override_set = true;
> +        }
> +
>           if ((e = getenv(ENV_LOG_LEVEL))) {
>               maximum_level_override = (pa_log_level_t) atoi(e);
>
> @@ -493,6 +499,7 @@ void pa_log_levelv_meta(
>                                   "CODE_FILE=%s", file,
>                                   "CODE_FUNC=%s", func,
>                                   "CODE_LINE=%d", line,
> +                                "PULSE_BACKTRACE=%s", pa_strempty(bt),
>                                   NULL) < 0) {
>   #ifdef HAVE_SYSLOG_H
>                       pa_log_target new_target = { .type = PA_LOG_SYSLOG, .file = NULL };
>
> Regards,
>

-- 
David Henningsson, Canonical Ltd.
https://launchpad.net/~diwic


More information about the pulseaudio-discuss mailing list