ตรวจสอบบันทึกอย่างต่อเนื่องด้วยหางที่หมุนเป็นครั้งคราว


21

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

เท่าที่ฉันเข้าใจปัญหาคือเมื่อบันทึกการหมุนแล้วจะมีไฟล์ใหม่ที่สร้างขึ้นและกระบวนการ tail run ไม่ทราบอะไรเกี่ยวกับการจัดการไฟล์ใหม่

คำตอบ:


34

อ่ามีธงสำหรับสิ่งนี้

แทนที่จะใช้tail -f /var/log/fileเราควรใช้tail -F /var/log/file


tail -Fแปลtail --follow=name --retryเป็นใน;

  • --follow=name: ทำตามชื่อไฟล์แทน file descriptor
  • --retry: หากไฟล์ไม่สามารถเข้าถึงได้ให้ลองอีกครั้งในภายหลังแทนที่จะตาย

ทำไมพวกเขาถึงมีตัวเลือก "-f" นี่ควรเป็นค่าเริ่มต้น!
Dominic Cerisano

27
# tail --follow=mylog.log

จากหางคน :

With --follow (-f), tail defaults to  following  the  file  descriptor,
       which  means that even if a tail’ed file is renamed, tail will continue
       to track its end.  This default behavior  is  not  desirable  when  you
       really want to track the actual name of the file, not the file descrip‐
       tor (e.g., log rotation).  Use --follow=name in that case.  That causes
       tail  to track the named file by reopening it periodically to see if it
       has been removed and recreated by some other program.

ดังนั้นในกรณีนี้การใช้-Fตัวเลือกจะถูกต้อง

-F     same as --follow=name --retry

11

คำตอบที่แน่นอนขึ้นอยู่กับระบบปฏิบัติการของคุณ - แต่ในหลาย ๆ กรณีtail -Fจะทำในสิ่งที่ถูกต้อง


3
ถ้า tail -F ไม่ทำงานให้คอมไพล์เวอร์ชันของ tail -F ที่ใช้ได้ อีกทางเลือกหนึ่งคือถนนสายสั้นสู่เมืองบ้า
chris


2

IMHO เป็นเรื่องแปลกเล็กน้อยที่จะเปลี่ยนไฟล์บันทึกของคุณเป็น SIZE แทนที่จะเป็นวันที่ บันทึกระบบส่วนใหญ่ (ในระบบปฏิบัติการยูนิกซ์หรือลินุกซ์) จะหมุนเวียนเป็นรายสัปดาห์หรือรายเดือนและไม่ขึ้นอยู่กับขนาด ... นี่คือสิ่งที่ฉันชอบด้วยเหตุผลหลายประการและสิ่งที่หากนำมาใช้จะช่วยแก้ปัญหาของคุณได้

แปดปีต่อมาฉันไม่รู้ว่าฉันกำลังพูดอะไรอยู่ที่นี่: มีหลาย ๆ ที่ที่คุณต้องการหมุนตามขนาดเนื่องจากการหมุนทุกวัน / สัปดาห์ / เดือนสามารถให้ไฟล์ขนาดใหญ่ซึ่งอาจทำให้เกิดปัญหาร้ายแรง

จากมุมมองที่มีประสบการณ์คำถามที่แท้จริงคือสาเหตุที่คุณต้องการนั่งและต่อท้ายไฟล์ที่เติบโตอย่างรวดเร็วจนคุณหมุนมันมากกว่าทุกวัน ... มันเหมือนกับการดูกระแส Matrix โดย

วันนี้คุณควรมองหาการรวมบันทึกข้อมูลขนาดใหญ่เช่น Splunk หรือ Sumologic ซึ่งสามารถกรองเหตุการณ์บันทึกในคลาสและทริกเกอร์ตามค่าบันทึกที่เฉพาะเจาะจง ... ไม่จำเป็นต้องดูบันทึกสด


ฉันเห็นด้วยและนี่คือสิ่งหนึ่งที่ฉันรู้ว่าฉันควรมองเข้าไป หวังว่า log4j รองรับ ขอบคุณ!
DivideByHero

1
ข้อดีอย่างหนึ่งของการหมุนตามขนาดคือคุณสามารถมั่นใจได้ว่าชุดของบันทึกทั้งหมดจะน้อยกว่าขนาดที่ทราบ
Jim Zajkowski

1

ฉันใช้คำสั่งบนเซิร์ฟเวอร์ที่ใช้งานจริง:

tail --follow var/log/apache-access_log --retry

-1

นอกจากนี้มันอาจจะหนักเกินไปสำหรับวัตถุประสงค์ของคุณเล็กน้อย แต่ความกล้าหาญมีคุณลักษณะหางเพื่อทำสิ่งที่คุณต้องการ ฟรีสูงสุด 500 MB / วัน แต่หากข้อมูลของคุณมีขนาดเกินกว่าที่กำหนดไว้มันจะไม่คุ้มค่ากับราคา

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