लॉगोट्रेट में विलम्ब विकल्प का उपयोग कब करें?


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.

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

मेरी समझ यह है कि copytruncateजब प्रोग्राम को लॉगफ़ाइल को बंद करने के लिए नहीं कहा जा सकता है तो इसका उपयोग किया जाना चाहिए। मुझे पता है कि जब कॉपी चल रही होती है तो लॉगफ़ाइल को लिखा गया कुछ डेटा खो जाता है।

मैं CouchDB के लिए logrotate फ़ाइल देख रहा था, और यह दोनों के लिए किया था copytruncateऔर delaycompressविकल्प।

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

ऐसा लगता है कि delaycompressजब copytruncateपहले से ही है तो इसका उपयोग करने का कोई मतलब नहीं है। मुझे किसकी याद आ रही है?

जवाबों:


27

आपकी समझ copytruncateसही है, लेकिन इसके लिए मैनपेज में शब्दांकन delaycompressथोड़ा भ्रामक है। अधिक ठीक से, यह कहना चाहिए "जब कुछ कार्यक्रम को तुरंत इसे लॉगफ़ाइल बंद करने के लिए नहीं कहा जा सकता है " - उदाहरण के लिए, यदि आप साझाकरण का उपयोग कर रहे हैं और स्क्रिप्ट लॉग का उपयोग करके प्रक्रिया को एक संकेत भेजती है जब सभी लॉग फ़ाइलों को घुमाया गया हो। ।


1
जब मैं उपयोग कर रहा हूं copytruncate, तो यह लॉगफाइल को बंद करने के लिए प्रोग्राम को बताने की कोई आवश्यकता नहीं है। तो क्या इसके delaycompressसाथ निर्दिष्ट करना अर्थहीन है copytruncate?
आनंद चितीपोथु

6
कभी भी उपयोग न करें copytruncateजब तक कि आपके पास बिल्कुल न हो, क्योंकि यह लॉग प्रविष्टियों को खो देता है। यदि आप दूसरी सुविधा delaycompressप्रदान करना चाहते हैं, तो आप दोनों विकल्पों का उपयोग कर सकते हैं - पहले इसे डिकम्प्रेस करने की आवश्यकता के बिना पिछले लॉगफ़ाइल को पढ़ने की क्षमता।
Womble

copytruncateअगर मेरे कार्यक्रम को फिर से लोड करने के लिए नहीं कह सकता तो क्या इसके अलावा कोई विकल्प नहीं है?
आनंद चित्रिपुथु

5
नहीं, आपको ऐसे सॉफ़्टवेयर का उपयोग करना चाहिए जो चूसना नहीं करते हैं, और जो "अपने लॉग को फिर से लोड करने" के लिए एक संकेत स्वीकार करेगा।
Womble

3

यकीन नहीं होता कि मैं आपके सवाल को पूरी तरह से समझ पा रहा हूं, लेकिन अगर आप पूछ रहे हैं कि मुझे क्या लगता है ... मैं इसका उपयोग करता हूं:

postrotate
          killall -HUP syslog-ng
  endscript

लॉग को मारने और अगले पर जाने के लिए यह एक अच्छा (या कम से कम) तरीका है। "प्रोग्राम" के लिए जो चूसना है, जैसे कि सिस्को के एएसए प्लेटफॉर्म जो प्रति सेकंड टन डेटा लॉग करते हैं, यह काम करता है।


3

हम प्रयोग करते हैं:

  • रोज
  • delaycompress
  • nodateext

यह अपाचे की निश्चित प्रतिलिपि बनाता है access_log access_log.1ताकि हम दिन के अंत में स्क्रिप्ट के रूप में अपने आँकड़े पैकेज को चला सकें।

अगले दिन लॉगरोटेट फ़ाइल बनाने को संकुचित करता है access_log.2.zip

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.