Logrotate ไม่ได้ลบบันทึกเก่า ๆ


14

ด้วยเหตุผลบางอย่างไฟล์บันทึกเก่าจะไม่ถูกลบ ตัวอย่างด้วยอาปาเช่

ไฟล์ conf บอกว่าอะไร:

$ cat /etc/logrotate.d/apache2
/var/log/apache2/*.log {
    weekly
    missingok
    rotate 2
    compress
    delaycompress
    notifempty
    create 640 root adm
    sharedscripts
    postrotate
            /etc/init.d/apache2 reload > /dev/null
    endscript
}

เนื้อหา (ครอบตัด) ของโฟลเดอร์บันทึก:

# ls /var/log/apache2/
access.log       error.log.26.gz                other_vhosts_access.log.20.gz  access-ssl.log.14.gz
access.log.1     error.log.27.gz                other_vhosts_access.log.21.gz  access-ssl.log.15.gz
access.log.2.gz  error.log.28.gz                other_vhosts_access.log.22.gz  access-ssl.log.16.gz
access.log.3.gz  error.log.2.gz                 other_vhosts_access.log.23.gz  access-ssl.log.17.gz
[...]

อันที่จริงมีพวกเขามากมาย:

# ls /var/log/apache2/ | wc -l
85

คำสั่ง logrotate ด้วย --verbose ให้สิ่งนี้แก่ฉัน:

# /usr/sbin/logrotate --verbose  /etc/logrotate.conf
[...]
reading config file apache2
reading config info for /var/log/apache2/*.log
[...]
rotating pattern: /var/log/apache2/*.log  weekly (2 rotations)
empty log files are not rotated, old logs are removed
considering log /var/log/apache2/access.log
  log does not need rotating
considering log /var/log/apache2/error.log
  log does not need rotating
considering log /var/log/apache2/other_vhosts_access.log
  log does not need rotating
considering log /var/log/apache2/pbpdhg-ssl.log
  log does not need rotating
not running postrotate script, since no logs were rotated
[...]

เกิดอะไรขึ้นที่นี่? บันทึกการหมุน แต่ไม่ได้ลบออก? ฉันกำลังคิดถึงอะไร

คำตอบ:


17

การกำหนดค่าของคุณพูดว่า: หมุน 2

นั่นหมายความว่าล็อกไฟล์จะถูกหมุน 2 ครั้งก่อนที่จะถูกลบดังนั้น logrotate จะดูแลไฟล์ประมาณ 2 ไฟล์เท่านั้น

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


ฉันไม่สามารถพิสูจน์คำตอบได้ดังนั้นฉันคิดว่ามันถูกต้อง อย่างไรก็ตามฉันไม่เข้าใจว่าทำไมaccess.log.3.gzยังมีอยู่
SamK

2
เนื่องจากการหมุน 2 จัดการกับไฟล์ได้ 2 ไฟล์เท่านั้นเช่น. 1.gz และ. 2.gz และไม่สนใจไฟล์อื่น
johnshen64

1
ฉันเปลี่ยนหมุน 365 เป็นหมุนเวียน 90 และ access.log.90.gz เป็นการเปลี่ยนแปลงล่าสุดแล้ว access.log.91.gz ถูกลบแล้ว (เนื่องจาก logrotate มีเพียง 90) แต่ไม่ใช่> 91 ดังนั้น johnshen64 นั้นถูกต้องคุณต้องลบอะไร> 2.
Yvan

นี่คือเคล็ดลับเกี่ยวกับวิธีจัดการกับสิ่งนี้โดยอัตโนมัติเช่นผ่านการจัดการการกำหนดค่าบนเซิร์ฟเวอร์หลายแห่ง: serverfault.com/a/636883/9082
Martijn Heemels

-3

บันทึกที่มีคำต่อท้าย. gz ไม่ถูกนำมาพิจารณาเนื่องจากคุณระบุ: /var/log/apache2/*.log

ดังนั้น 2 .log และไฟล์. gz ทั้งหมดยังคงอยู่

หากต้องการเปลี่ยนสิ่งนี้

/ var / log / apache2 / ** log * หรือการแสดงออกปกติบางอย่าง


ขออภัยเพียงหนึ่งดอกจันก่อนบันทึก
Neg88

2
สำหรับปัญหาดอกจันคุณสามารถแก้ไขโพสต์ของคุณ โดยทั่วไปทำไมคุณคิดว่าคำตอบที่ยอมรับนั้นผิด logrotate ต้องการไฟล์ชื่อฐานและเกี่ยวข้องกับการเพิ่ม. gz ตามต้องการ
กฎหมาย 29

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