लोगरोट पुराने लॉग को नहीं हटाता है


14

किसी कारण से पुरानी लॉग फाइलें हटाई नहीं गई हैं। अपाचे के साथ उदाहरण

क्या कहता है फ़ाइल:

$ 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

लॉगरोट कमांड --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 बार घुमाया जाता है, इसलिए लॉगोटेट केवल 2 फ़ाइलों की परवाह करता है।

मेरा अनुमान है कि कॉन्फ़िगरेशन को किसी बिंदु पर बदल दिया गया था, क्योंकि पहले अधिक लॉग फ़ाइलें रखी गई थीं, शायद यह 28 चक्कर घुमाए जाने जैसा कुछ था। इन पुरानी फ़ाइलों को आपको मैन्युअल रूप से निकालना होगा।


मैं जवाब साबित नहीं कर सकता इसलिए मुझे लगता है कि यह सही है। हालाँकि मुझे समझ नहीं आ रहा है कि access.log.3.gzअभी भी क्यों मौजूद है।
सैमके

2
क्योंकि रोटेट 2 केवल 2 फ़ाइलों को संभालती है, अर्थात, .1.gz और .2.gz, और अन्य फ़ाइलों को अनदेखा करता है।
जॉनशेन 64

1
मैंने 90 को घुमाने के लिए 365 को घुमाया, और access.log.90.gz को अब तक का नवीनतम बदला गया। Access.log.91.gz को हटा दिया गया है (क्योंकि लोगरोट केवल 90 रखता है), लेकिन नहीं> 91. तो johnshen64 सही है, आपको कुछ भी निकालना होगा> 2.
यवन

यहाँ पर स्वचालित रूप से इससे निपटने का तरीका बताया गया है, अर्थात कई सर्वरों पर कॉन्फिग प्रबंधन के माध्यम से: serverfault.com/a/636883/9082
Martijn Heemels

-3

प्रत्यय .gz के साथ लॉग को इसलिए नहीं माना जाता है क्योंकि आपने निर्दिष्ट किया था: /var/log/apache2/*.log

तो 2 .log और सभी .gz फाइलें रहती हैं।

इसे वहां बदलने के लिए

/ var / log / apache2 / ** लॉग * या कुछ नियमित अभिव्यक्ति।


क्षमा करें, लॉग से पहले सिर्फ एक तारांकन चिह्न
Neg88

2
तारांकन समस्या के लिए, आप अपनी पोस्ट को संपादित कर सकते हैं। अधिक आम तौर पर, आपको क्यों लगता है कि स्वीकृत उत्तर गलत है? logrotate आधार नाम की फाइलें चाहता है और आवश्यकतानुसार .gz परिवर्धन से संबंधित है।
Law29

यह उत्तर वास्तव में हानिकारक है क्योंकि इसमें जोखिम होता है जिसके परिणामस्वरूप फाइलें बार-बार घुमाई जा सकती हैं, कम से कम कुछ लॉगरेट संस्करणों के साथ। यह फ़ाइलों को पहले संपीड़ित करेगा, फिर संपीड़ित फ़ाइलों का मिलान करेगा और उन्हें घुमाता रहेगा।
रिचल्व
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.