Bagaimana mengarahkan keluaran jurnal unit tertentu ke file tertentu?

12

Saya punya sistem dengan beberapa daemon yang berjalan (sebagai unit systemd) yang menampilkan informasi log ke jurnal di Arch Linux. Saya ingin mengarahkan output jurnal dari beberapa file unit tersebut ke file teks terpisah yang lokasinya saya tentukan, pada dasarnya membuat file log untuk subset unit. Bagaimana saya bisa melakukan itu?

Amr Bekhit
sumber
Pertanyaan terkait adalah unix.stackexchange.com/questions/468444 .
JdeBP

Jawaban:

10

Tampaknya ini tidak mungkin dan tidak diinginkan oleh upstream (mengarahkan stdout / stderr ke file individual) lihat misalnya http://lists.freedesktop.org/archives/systemd-devel/2012-March/004705.html - baca seluruh utas untuk lebih informasi konteks bagaimana ini dimaksudkan untuk bekerja.

Apa yang dapat Anda lakukan, adalah login ke syslog, dan dengan cara itu menulis ke file individual. Atau sebaliknya, jika unit memanggil beberapa program yang dapat menulis log itu sendiri, kemudian menggunakannya untuk masuk ke file.

Anda mungkin juga ingin melihat Lihat stdout / stderr dari layanan systemd

Apa yang sudah dapat Anda lakukan dengan pengaturan Anda saat ini, digunakan
journalctl -u yourunitname > yourlogfile_for_yourunitname
untuk mengarahkan seluruh output jurnal untuk unit Anda "nama panggilan" ke dalam file.

Pada bagian terakhir, Anda juga harus melihat petunjuk dari Lennart dari utas milis yang disebutkan di atas:

Pada versi systemd baru-baru ini sesuatu seperti systemd-journalctl -o cat _SYSTEMD_UNIT=postgresql.serviceharus membuat output yang sangat sederhana yang hanya mencakup pesan aktual dan tidak ada yang lain. Anda bahkan dapat melewati "-f" dan membuatnya hidup. "

EDIT: Sebenarnya, untuk versi systemd yang lebih baru perintahnya hanya journalctl dan dari apa yang bisa saya katakan, perintah panjang yang disebutkan di atas adalah sama dengan journalctl -u yourunitnamedan Anda juga dapat di -fsana untuk "mengikuti" output (seperti dalam tailf atau tail -f).

doktor5000
sumber