mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-18 07:00:06 -05:00
pipewire: load journald logging when available
See https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/358 Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
This commit is contained in:
parent
c101ff2057
commit
d7d4f094a8
1 changed files with 40 additions and 0 deletions
|
|
@ -340,6 +340,40 @@ static void *add_interface(struct support *support,
|
||||||
return iface;
|
return iface;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_SYSTEMD
|
||||||
|
static struct spa_log *load_journal_logger(struct support *support)
|
||||||
|
{
|
||||||
|
struct spa_handle *handle;
|
||||||
|
void *iface = NULL;
|
||||||
|
int res = -ENOENT;
|
||||||
|
uint32_t i;
|
||||||
|
|
||||||
|
/* is the journal even available? */
|
||||||
|
if (access("/run/systemd/journal/socket", F_OK) != 0)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
|
handle = pw_load_spa_handle("support/libspa-journal",
|
||||||
|
SPA_NAME_SUPPORT_LOG, NULL,
|
||||||
|
support->n_support, support->support);
|
||||||
|
|
||||||
|
if (handle == NULL ||
|
||||||
|
(res = spa_handle_get_interface(handle, SPA_TYPE_INTERFACE_Log, &iface)) < 0) {
|
||||||
|
pw_log_error("can't get log interface %d", res);
|
||||||
|
} else {
|
||||||
|
/* look for an existing logger, and
|
||||||
|
* replace it with the journal logger */
|
||||||
|
for (i = 0; i < support->n_support; i++) {
|
||||||
|
if (strcmp(support->support[i].type, SPA_TYPE_INTERFACE_Log) == 0) {
|
||||||
|
support->support[i].data = iface;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return (struct spa_log *) iface;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/** Initialize PipeWire
|
/** Initialize PipeWire
|
||||||
*
|
*
|
||||||
* \param argc pointer to argc
|
* \param argc pointer to argc
|
||||||
|
|
@ -397,6 +431,12 @@ void pw_init(int *argc, char **argv[])
|
||||||
log = add_interface(support, SPA_NAME_SUPPORT_LOG, SPA_TYPE_INTERFACE_Log, &info);
|
log = add_interface(support, SPA_NAME_SUPPORT_LOG, SPA_TYPE_INTERFACE_Log, &info);
|
||||||
if (log)
|
if (log)
|
||||||
pw_log_set(log);
|
pw_log_set(log);
|
||||||
|
|
||||||
|
#ifdef HAVE_SYSTEMD
|
||||||
|
log = load_journal_logger(support);
|
||||||
|
if (log)
|
||||||
|
pw_log_set(log);
|
||||||
|
#endif
|
||||||
} else {
|
} else {
|
||||||
support->support[support->n_support++] =
|
support->support[support->n_support++] =
|
||||||
SPA_SUPPORT_INIT(SPA_TYPE_INTERFACE_Log, pw_log_get());
|
SPA_SUPPORT_INIT(SPA_TYPE_INTERFACE_Log, pw_log_get());
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue