When running under systemd from its `.service` file, the daemon is
started with `--daemonize=no`. This means that the default logging
target is `stderr` (see the documentation for `--log-target` in
`pulse-daemon.conf(5)`). That works fine, but results in all the
structured logging data from the `pa_log()` calls being thrown away and
not making it into the journal.
In order to preserve structured logging data, and hence make the
messages in the journal a little more useful (for example, allowing the
user to filter by message priority), explicitly pass
`--log-target=journal` in the `.service` file. This should always be
appropriate because the journal should always be used with systemd.
Signed-off-by: Philip Withnall <withnall@endlessm.com>
The autospawn mechanism already had a root-autospawn protection mechanism. When
using systemd that was lost. Systemd 234 has a mechanism to conditionalize unit starting
on the running user, so lets do that to protect against root autospawning.
The reason for depending on the socket unit is rather unobvious, so
let's add a comment to help people reading the service unit file. Felipe
Sateler explained the rationale well in the commit message of
7cb524a77b, so I just copied the same text into the comment.
This commit fixes two problems:
1. Because there are no implicit dependencies between sockets and services,
the socket, as set up by systemd will race with the socket, as set up
by the pulseaudio daemon. This can cause the pulseaudio.socket unit to
fail (even though the pulseaudio service started just fine), which can
confuse users.
2. While it is possible to use the service without the socket, it is not
clear why it would be desirable. And a user installing pulseaudio and
doing `systemctl --user start pulseaudio` will not get the socket
started, which might be confusing and problematic if the server is to
be restarted later on, as the client autospawn feature might kick in.