I've got a system with several daemons running (as systemd units) that output log information to the journal in Arch Linux. I want to direct the journal output of some of those unit files into a separate text file whose location I specify, essentially creating a log file for a subset of units. How can I go about doing that?
Seems this is not possible and unwanted by upstream (redirecting stdout/stderr to individual files) see e.g. http://lists.freedesktop.org/archives/systemd-devel/2012-March/004705.html - read the whole thread for more context information how this is intended to work.
What you can do, is either log to syslog, and that way write to individual files. Or the other way around, if the unit calls some program which can write a log itself, then use that to log to a file.
You may also want to take a look at View stdout/stderr of systemd service
What you already can do with your current setup, is use
journalctl -u yourunitname > yourlogfile_for_yourunitname
to direct the whole journal output for your unit "yourunitname" into a file.
On the latter part, you should also take a look at the hints from Lennart from abovementioned mailing list thread:
On recent systemd versions something like
systemd-journalctl -o cat _SYSTEMD_UNIT=postgresql.serviceshould create a very simple output that only includes the actual messages and nothing else. You can even pass "-f" and make this live."
Actually, for newer systemd versions the command is only journalctl and from what I can tell, the abovementioned long command is the same as
journalctl -u yourunitname and you can also
-f there to "follow" the output (as in tailf or tail -f).