การรวมส่วนท้าย && journalctl


27

ฉันกำลังปรับแต่งบันทึกของแอพและ postgres

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

ฉันต้องรวมบันทึกของ pgpool ด้วย มันเคยเป็น syslog แต่ตอนนี้มันอยู่ใน journalctl

มีวิธีผูกหาง -f && journalctl -f ด้วยกันไหม?

คำตอบ:


27

คุณสามารถใช้:

journalctl -u service-name -f

-f, - ติดตาม

แสดงเฉพาะรายการบันทึกประจำวันล่าสุดและพิมพ์รายการใหม่อย่างต่อเนื่องเมื่อมีการต่อท้ายวารสาร

ที่นี่ฉันได้เพิ่ม "service-name" เพื่อแยกความแตกต่างคำตอบนี้จากคนอื่น ๆ ; service-nameคุณแทนชื่อบริการที่เกิดขึ้นจริงแทนของข้อความ


20

คุณสามารถส่งต่อรายการบันทึกของคุณไปยังวารสาร :

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

และจากนั้นใช้journalctl -f... ถึงแม้ว่าจะทำเครื่องหมายตามที่กล่าวไว้ว่าจะพิมพ์รายการบันทึกประจำวันทั้งหมด


วิธีหนึ่งในการกรองเฉพาะข้อความจากบันทึกเหล่านั้นและจากหน่วยเฉพาะนั้นคือการใช้ความแตกต่างSYSLOG_IDENTIFIERเช่นแก้ไขไฟล์หน่วยและภายใต้[Service]ส่วนเพิ่มเช่น

SyslogIdentifier=my_stuff

รีสตาร์ทหน่วยจากนั้นเรียกใช้systemd-catด้วยตัวระบุเดียวกัน

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

และในที่สุดก็สืบค้นวารสารเฉพาะตัวระบุนั้นเท่านั้น:

journalctl -f -t my_stuff

4

หากคุณมีทุบตีพร้อมใช้งานคุณสามารถใช้การทดแทนกระบวนการเป็นหนึ่งในtailพารามิเตอร์:

tail -f /tmp/myapp.log /var/log/postgresql/postgresql.main.log <(journalctl -f)

นี่เป็นวิธีที่ฉันลองใช้อย่างหรูหรา แต่ไม่ได้ผล หางแสดงให้เห็นว่ามันใช้ / dev / fd / xx แต่ไม่มีการบันทึกแสดง
bikey

แก้ไข; / dev / fd / xxx เป็นไพพ์ชั่วคราวที่ bash ใช้เพื่อดำเนินการทดแทนกระบวนการ; เอาท์พุท journalctl ใด ๆ จะปรากฏขึ้นที่นั่น
Jeff Schaller

5
คุณอาจไม่ต้องการติดตามวารสารทั้งหมด แต่เพียงแค่วารสารสำหรับหน่วย pgpool สมมติว่าบริการที่มีชื่อลองpgpool.service journalctl -fu pgpool.serviceนอกจากนี้หากคุณไม่ได้เรียกใช้สิ่งนี้ในฐานะรูทตรวจสอบให้แน่ใจว่าผู้ใช้อยู่ในsystemd-journalกลุ่ม
Mark Stosberg

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.