Menggabungkan tail && journalctl

27

Saya tailing log dari aplikasi dan postgres saya sendiri.

tail -f /tmp/myapp.log /var/log/postgresql/postgresql.main.log

Saya perlu memasukkan log pgpool. Dulu syslog tapi sekarang di journalctl.

Apakah ada cara untuk mengikat tail -f && journalctl -f bersama?

sepeda
sumber

Jawaban:

27

Anda bisa menggunakan:

journalctl -u service-name -f

-f, --follow

Tampilkan hanya entri jurnal terbaru, dan terus-menerus cetak entri baru saat ditambahkan ke jurnal.

Di sini saya telah menambahkan "nama layanan" untuk membedakan jawaban ini dari yang lain; Anda mengganti nama layanan yang sebenarnya dan bukan teks service-name.

Toufic
sumber
20

Anda dapat meneruskan entri log Anda ke jurnal :

systemd-cat tail -f /tmp/myapp.log /var/log/postgresql.log

dan kemudian gunakan journalctl -f... meskipun seperti yang disebutkan Markus, itu akan mencetak semua entri jurnal.


Salah satu cara untuk memfilter hanya pesan dari log tersebut dan dari unit tertentu adalah dengan menggunakan yang berbeda SYSLOG_IDENTIFIERyaitu mengedit file unit dan di bawah [Service]bagian tambahkan misalnya

SyslogIdentifier=my_stuff

restart unit kemudian jalankan systemd-catdengan pengidentifikasi yang sama

systemd-cat -t my_stuff tail -f /tmp/myapp.log /var/log/postgresql.log

dan akhirnya meminta jurnal hanya untuk pengidentifikasi tertentu:

journalctl -f -t my_stuff
don_crissti
sumber
4

Jika tersedia bash, Anda dapat menggunakan subtitusi proses sebagai salah satu tailparameter:

tail -f /tmp/myapp.log /var/log/postgresql/postgresql.main.log <(journalctl -f)
Jeff Schaller
sumber
Ini adalah cara elegan yang saya coba, tetapi tidak berhasil. Tail menunjukkan bahwa ia menggunakan / dev / fd / xx, tetapi tidak ada log yang ditampilkan.
Bersepeda
benar; / dev / fd / xxx adalah pipa sementara yang digunakan bash untuk mengimplementasikan proses substitusi; output jurnalctl akan muncul di sana.
Jeff Schaller
5
Anda mungkin tidak ingin mengikuti seluruh jurnal tetapi hanya untuk unit pgpool. Dengan asumsi layanan bernama pgpool.service, coba journalctl -fu pgpool.service. Juga, jika Anda tidak menjalankan ini sebagai root, pastikan pengguna berada di systemd-journalgrup!
Mark Stosberg
1

coba sesuatu seperti:

tail -f /tmp/myapp.log >> /tmp/tail.log &
journalctl -f >> /tmp/tail.log &
tail -f /tmp/tail.log
Paul
sumber