เมื่อใดที่จะใช้ตัวเลือกการหน่วงเวลาการบีบอัดใน logrotate


33

หน้าคนlogrotateพูดว่า:

It can be used when some program cannot be told to close its logfile
and  thus  might  continue writing to the previous log file for some
time.

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

ความเข้าใจของฉันคือสิ่งที่copytruncateควรใช้เมื่อโปรแกรมไม่สามารถบอกให้ปิดล็อกไฟล์ ฉันทราบว่าข้อมูลบางอย่างที่เขียนไปยังล็อกไฟล์หายไปเมื่อกำลังดำเนินการคัดลอก

ฉันดูไฟล์ logrotate เพื่อหา couchdb และมีทั้งตัวเลือกcopytruncateและdelaycompressตัวเลือก

/usr/local/couchdb-1.0.1/var/log/couchdb/*.log {
   weekly
   rotate 10
   copytruncate
   delaycompress
   compress
   notifempty
   missingok
}

ดูเหมือนว่าไม่มีจุดใช้delaycompressเมื่อcopytruncateอยู่ที่นั่นแล้ว ฉันพลาดอะไรไป

คำตอบ:


27

ความเข้าใจของคุณcopytruncateนั้นถูกต้อง แต่ข้อความใน manpage for delaycompressนั้นทำให้เข้าใจผิดเล็กน้อย ควรพูดว่า "เมื่อโปรแกรมบางโปรแกรมไม่สามารถบอกให้ปิด logfile ได้ทันที " - ตัวอย่างเช่นหากคุณใช้ sharedscripts และสคริปต์จะส่งสัญญาณไปยังกระบวนการโดยใช้บันทึกเมื่อไฟล์บันทึกทั้งหมดถูกหมุน .


1
เมื่อฉันใช้copytruncateไม่จำเป็นต้องบอกโปรแกรมให้ปิดไฟล์ logfile ดังนั้นมันไม่มีความหมายที่จะระบุdelaycompressพร้อมกับcopytruncate?
Anand Chitipothu

5
ห้ามใช้copytruncateจนกว่าคุณอย่างต้องเพราะมันสูญเสียรายการบันทึก คุณสามารถใช้ทั้งสองตัวเลือกหากคุณต้องการคุณสมบัติอื่น ๆ ที่delaycompressมี - ความสามารถในการอ่าน logfile ก่อนหน้าโดยไม่จำเป็นต้องแตกไฟล์ก่อน
womble

มีตัวเลือกอื่นนอกเหนือจากcopytruncateถ้าฉันไม่สามารถบอกให้โปรแกรมโหลดใหม่ได้หรือไม่?
Anand Chitipothu

5
ไม่นี่เป็นเหตุผลว่าทำไมคุณควรใช้ซอฟต์แวร์ที่ไม่ดูดและจะรับสัญญาณเพื่อบอกว่า "โหลดบันทึกของคุณใหม่"
womble

3

ไม่แน่ใจว่าฉันเข้าใจคำถามของคุณทั้งหมดหรือไม่ แต่ถ้าคุณถามสิ่งที่ฉันคิดว่า ... ฉันใช้สิ่งนี้:

postrotate
          killall -HUP syslog-ng
  endscript

นั่นเป็นวิธีที่ดี (หรืออย่างน้อย a) ในการฆ่าบันทึกและย้ายไปยังถัดไป สำหรับ "โปรแกรม" ที่ดูดเช่นแพลตฟอร์ม ASA ของ Cisco ที่บันทึกข้อมูลเป็นตันต่อวินาที


3

เราใช้:

  • ประจำวัน
  • delaycompress
  • nodateext

สิ่งนี้จะสร้างสำเนาถาวรของ apache access_log access_log.1เพื่อให้เราสามารถเรียกใช้แพคเกจสถิติของเราเป็นสคริปต์ในตอนท้ายของวัน

logrotate ในวันถัดไปบีบอัดไฟล์ที่สร้าง access_log.2.zip

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