लोगरोट: "लॉग को घुमाने की आवश्यकता नहीं है" क्यों?


57

मेरे पास निम्नलिखित नए लॉग कॉन्फ़िगरेशन हैं:

/var/log/nexus/nexus.log {
    rotate 7
    missingok
    compress
    delaycompress
    copytruncate
    daily
}

जब मैं दौड़ता हूं logrotate -d nexus, तो मुझे निम्नलिखित मिलते हैं:

reading config file nexus
reading config info for /var/log/nexus/nexus.log

Handling 1 logs

rotating pattern: /var/log/nexus/nexus.log  after 1 days (7 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/nexus/nexus.log
  log does not need rotating

मेरे / var / log / nexus / फ़ोल्डर में निम्नलिखित शामिल हैं:

nexus.log
oldlogs.tar.gz

LogRotate नेक्सस.लॉग फ़ाइल को घुमा क्यों नहीं रहा है? मैं जो उम्मीद कर रहा था, वह यह था कि nexus.log फ़ाइल को काट दिया गया होगा और एक नई फ़ाइल, nexus.log-201106241000 जैसी कोई चीज़ बनाई गई होगी।


यह भी याद रखें, जब आप -d विकल्प का उपयोग करते हैं, तो यह सूचना लॉग नहीं करता है। यह आपको दिखाता है कि यह क्या विकल्प के बिना चलता है, गेम प्लान की तरह। जब मुझे लगा कि मुझे लगता है कि मैं उन्हें घूमता हुआ देख सकता हूं, तो कुछ गंभीर सिरदर्द हो गए, और तब भी वे वहीं थे।
मैक्सवेल फ्लैंडर्स

जवाबों:


64

सबसे अधिक संभावना है, लॉग फ़ाइल एक दिन पुरानी से कम है और / या अंतिम दिन के भीतर घुमाया गया है और लॉगोटेट इतिहास को याद करता है।

यदि आप -fइसे जोड़ते हैं, तो यदि आप वास्तव में चाहते हैं तो एक रोटेशन को बाध्य करेंगे (हालांकि 100% सुनिश्चित नहीं है कि यह कैसे बातचीत करता है -d)।

आप इतिहास को देख सकते हैं, स्थान आपके वितरण पर निर्भर करता है, लेकिन हो सकता है /var/lib/logrotate/status। उस फ़ाइल से पता चलता है जब लॉग अंतिम बार घुमाए गए थे।


4
FreeBSD में यह /var/run/logrotate.status
kaleissin

स्थिति फ़ाइल स्थान के लिए आह्वान में -s तर्क के संभावित उपयोग के लिए भी जाँच करें
JGurtz

2
-d+ -fसभी फ़ाइलों के लिए लॉगरोट रिपोर्ट को "घूर्णन की आवश्यकता" बनाता है, यहां तक ​​कि वे जो मेल नहीं खाते हैं
शराबी

इसे जोड़ने के लिए, स्थिति फ़ाइल में दिनांक को रोटेशन नीति से पुरानी होने के लिए संपादित करना logrotateयह समझाने के लिए पर्याप्त है कि लॉग को फिर से चलने पर इसे घुमाने की आवश्यकता होती है।
Centimane

CentOS पर, मैंने logrotate को काम करने के लिए /var/lib/logrotate.status को संशोधित किया। जैसा कि EightBitTony द्वारा इंगित किया गया है, दैनिक लॉगोटेट इतिहास को याद रखेगा। जब तक कि इतिहास इतिहास में पहले से ही एक तारीख के साथ नहीं है, तब तक लोगरोट फ़ाइल को घुमाएंगे नहीं।
मार्क

58

पहली बार जब आप लॉग लॉग को एक नए लॉग कॉन्फ़िगरेशन के साथ चलाते हैं, तो यह नहीं पता होता है कि अंतिम लॉग रोटेशन कब हुआ था, इसलिए यह सिर्फ इस बात के लिए एक स्टेटस लाइन लिखता है /var/lib/logrotate/statusकि यह आज चलाया गया था।

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

जब आप मैन्युअल रूप से लॉगरोट चलाते हैं, तो यह अपेक्षित रूप से काम करेगा


5

कभी-कभी भले ही आप मैन्युअल रूप से लॉगरोट चलाते हों, लेकिन यदि आप इसे उसी दिन करते हैं तो यह काम नहीं करेगा और dateextजहां डिफ़ॉल्ट मान में सेंसेक्स (जैसे -%Y%m%d) शामिल नहीं हैं । भले ही आप logrotate की स्थिति फ़ाइल को संशोधित करते हैं या आकार निर्देश (जैसे size 200M) का उपयोग करते समय नहीं । कम से कम CentOS 6 पर, लॉगरोटेट आपकी लॉग फ़ाइल को घुमाने में विफल रहेगा क्योंकि यह पहले से मौजूद है।

इसे हल करने के लिए, आपको dateformatइसके बजाय उपयोग करने की आवश्यकता है dateext, जैसे मान %Y%m%d%s:।

man logrotateअधिक जानकारी के लिए देखें ।


1

जो चल रहा है, उससे सावधान रहें

logrotate -vdf /etc/logrotate.conf

घटना हालांकि केवल सिम्युलेटेड है /var/lib/logrotate.status और लॉग इन किया जाएगा और बाद में लॉगोट्रोट रन का उल्लेख किया जाएगा

log does not need rotating

1
मैं उबंटू (16.04 और 17.04) पर पुन: पेश नहीं कर सकता। यदि "/var/lib/logrotate.status" का उपयोग किया जाता है, तो आपको दूसरे डिस्ट्रो का उपयोग करना चाहिए। Ubuntu "/ var / lib / logrotate / स्थिति" में प्रवेश करता है।
फिलिप क्लेन

2
@ पॉलिप क्लेन: आप सही कह रहे हैं (स्टेटस फ़ाइल /var/lib/logrotate.statusजिस पर रखी गई है ) को देखा गया है जबकि डॉकटर कंटेनर के भीतर अल्पाइन लाइनक्स 3.5 पर लॉगोटेट 3.10 के डिबगिंग कॉन्फ़िगरेशन को डिबगिंग करते हुए। लेकिन सवाल की परिभाषा में कोई उबंटू झंडा नहीं है, है ना?
हेल्वेट

1
हाँ, यह ठीक है। मैं सिर्फ इसका उल्लेख करूंगा क्योंकि उबंटू इतना लोकप्रिय है। मुझे लगता है कि कई लोग इस सवाल को पढ़ते हैं क्योंकि वे अपने सर्वर को ठीक करना चाहते हैं, जो आज अक्सर उबंटू के साथ चलता है।
फिलिप क्लेन

1
ठीक है, यह सही है। पूरा होने के लिए मैं यह कह सकता हूं कि सेंटोस 7 डिस्ट्रो में स्टेटस फाइल का लोकेशन है/var/lib/logrotate/logrotate.status
हेल्वेट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.