जवाबों:
मेरे अनुभव में, logrotate बहुत अच्छा है। यह बहुत लचीला है, और अधिकांश सॉफ्टवेयर के साथ अच्छा काम करता है।
हालाँकि, इसके साथ कुछ समस्याएँ हैं, और जैसा कि क्रोनोलॉज़ मुख्य रूप से एक वेब लॉग रोटेशन सुविधा है, मैं लॉगोट्रेट + अपाचे के साथ अपने अनुभव को लिखूंगा जो समस्याग्रस्त था:
लॉग को घुमाते समय, हमें अपाचे को सूचित करना चाहिए कि एक लॉग को घुमाया जा रहा है, जैसे कि लॉगरोटेट access.log का नाम बदल देता है। access.log.1 तक, अपाचे access.log.1 को लिखना जारी रखेगा, क्योंकि यह इनोड में लिख रहा है, और फ़ाइल का नाम बदलना इनोड नंबर को प्रभावित नहीं करता है।
डेबियन एच (और शायद कई अन्य डिस्ट्रोस) पर, एपाचे लॉग को घुमाने के लिए लॉगरोटेट का उपयोग किया जा रहा है। अब, अपाचे के पास एक शानदार पुनरारंभ है जो अपाचे बच्चे की प्रक्रियाओं को मौजूदा कनेक्शनों की सेवा समाप्त करने से पहले बाहर निकलने की सलाह देता है, अपाचे फिर यह कॉन्फ़िगरेशन को फिर से पढ़ता है, नई बाल प्रक्रियाओं को जन्म देता है, जो एक नई लॉग फ़ाइल में लिखना शुरू करता है (मामले में पिछले एक) घुमाया)।
यह एक महान समाधान की तरह लगता है, हालांकि ग्रेसफुल रिस्टार्ट हमेशा कुछ परिस्थितियों (जैसे भारी भार) में काम नहीं करता है, इसलिए डेबियन डेवलपर्स ने अपाचे लॉगोटेट कॉन्फ़िगरेशन में एक ग्रेसफुल पुनरारंभ के बजाय एक अपाचे पुनरारंभ का उपयोग करने का निर्णय लिया। दुर्भाग्य से यह सभी कनेक्शनों को एक ही बार में गिराने का कारण बनता है, जो भारी लोड वाली साइटों के लिए बहुत बुरा है। इसके अलावा, अपाचे पुनरारंभ भी अपाचे को रोकने और शुरू नहीं करने (कुछ लोड स्थितियों में भी) जैसी समस्याओं का कारण बन सकता है, विवरण के लिए नीचे दिए गए बग लिंक देखें।
लब्बोलुआब यह है, लोगरोट महान है, लेकिन कुछ कार्यक्रमों के लिए कुछ मुद्दों को जन्म दे सकता है। मुझे क्रोनोलॉग के साथ बहुत अनुभव नहीं है, लेकिन जैसा कि यह एक पाइप के माध्यम से लॉग लिखता है, इसे लॉग फ़ाइलों को घुमाते समय किसी भी अपाचे रीलोड की आवश्यकता नहीं होती है, जो मूल रूप से ऊपर वर्णित सभी को हल करता है।
संबंधित लॉगोटेट / अपाचे डेबियन बग:
मैं क्रोनोलॉग पसंद करता हूं, लेकिन यह वास्तव में मजबूत प्राथमिकता नहीं है।
logrotate जहां cron द्वारा शुरू किया गया है, और यदि किसी कारण से एक सिस्टम डाउन हो जाता है जब रोटेट होना चाहिए था, तो आपकी लॉग फाइलें घुमाई नहीं जाएंगी।
मुझे यह भी पसंद है कि लॉग फाइल के पास नाम में तारीख (% Y% m.combined.access.log) है क्योंकि मैं उन लॉग को लंबे समय तक रखता हूं। अधिकांश सिस्टमों पर, डिफ़ॉल्ट रूप से, अपाचे लॉगोटेट फाइलों का नाम access.log, access.log.1, आदि रखेंगे। लॉगरोट के साथ लॉगफाइल्स में एक तारीख का उपयोग करना संभव हो सकता है, लेकिन मैं यह नहीं पता लगा सका कि पिछली बार मैंने कैसे देखा था।
केवल कभी लॉगोटेट का उपयोग किया। यह डेबियन डिफ़ॉल्ट रूप से उपयोग करता है और मुझे इसके साथ कोई शिकायत नहीं है।
मैं लगभग विशेष रूप से उपयोग करने cronolog
से अधिक logrotate
।
logrotate
डेबियन के साथ आता है, और मैं इसे मेल सर्वर लॉग जैसी सिस्टम सेवाओं के लिए काम करने की अनुमति देता हूं। लेकिन अपाचे और lighttpd
लॉग फ़ाइलों के लिए, यह सब है cronolog
।
मेरे द्वारा उपयोग किए जाने के कारणों में से cronolog
एक यह है कि सभी कॉन्फ़िगरेशन वेब सर्वर कॉन्फ़िगरेशन की लॉग-फाइल लाइन में होता है
एक lighttpd
विन्यास फाइल में उदाहरण के लिए , आप डाल सकते हैं:
accesslog.filename = "|/usr/bin/cronolog --symlink=/var/log/webs/access.log /var/log/webs/%Y/%W-access.log"
और सभी को किसी भी अन्य कॉन्फ़िगरेशन के बिना हर हफ्ते एक नई लॉग फ़ाइल मिलती है। या आप रचनात्मक हो सकते हैं और कुछ ऐसा कर सकते हैं:
accesslog.filename = "|/usr/bin/cronolog --symlink=/var/log/webs/access.log /var/log/webs/%Y/%m/%a-access.log"
और एक लॉग फ़ाइल प्राप्त करें जो सप्ताह के दिन तक ट्रैफ़िक दिखाता है। जैसे रविवार, सभी मंगलवार।
क्या बेहतर है कि भले ही सर्वर किसी भी समय के लिए नीचे है, फिर भी सही लॉग फ़ाइल को पुनरारंभ करने पर उपयोग किया जाएगा।