Comment diriger la sortie du journal de certaines unités vers un fichier particulier?

12

J'ai un système avec plusieurs démons en cours d'exécution (en tant qu'unités systemd) qui fournissent des informations de journal au journal dans Arch Linux. Je veux diriger la sortie du journal de certains de ces fichiers d'unité dans un fichier texte séparé dont je spécifie l'emplacement, créant essentiellement un fichier journal pour un sous-ensemble d'unités. Comment puis-je m'y prendre?

Amr Bekhit
la source
Une question connexe est unix.stackexchange.com/questions/468444 .
JdeBP

Réponses:

10

Semble que ce n'est pas possible et indésirable en amont (rediriger stdout / stderr vers des fichiers individuels) voir par exemple http://lists.freedesktop.org/archives/systemd-devel/2012-March/004705.html - lire le fil entier pour plus informations contextuelles sur la manière dont cela doit fonctionner.

Ce que vous pouvez faire, c'est soit vous connecter à syslog, soit écrire de cette façon dans des fichiers individuels. Ou l'inverse, si l'unité appelle un programme qui peut écrire un journal lui-même, utilisez-le pour vous connecter à un fichier.

Vous voudrez peut-être également jeter un œil à Afficher stdout / stderr du service systemd

Ce que vous pouvez déjà faire avec votre configuration actuelle, c'est utiliser
journalctl -u yourunitname > yourlogfile_for_yourunitname
pour diriger la sortie de journal entière pour votre unité "votre nom d'unité" dans un fichier.

Sur cette dernière partie, vous devriez également jeter un coup d'œil aux conseils de Lennart du fil de la liste de diffusion susmentionnée:

Sur les versions récentes de systemd, quelque chose comme systemd-journalctl -o cat _SYSTEMD_UNIT=postgresql.servicedevrait créer une sortie très simple qui ne comprend que les messages réels et rien d'autre. Vous pouvez même passer "-f" et le faire vivre. "

EDIT: En fait, pour les versions plus récentes de systemd, la commande est uniquement journalctl et d'après ce que je peux dire, la commande longue susmentionnée est la même que journalctl -u yourunitnameet vous pouvez également -fy "suivre" la sortie (comme dans tailf ou tail -f).

doktor5000
la source