2015-03-17 5 views
8

पायथन का अपना RotatingFileHandler है जो स्वचालित रूप से लॉग फ़ाइलों को घुमाने वाला माना जाता है। लिनक्स एप्लिकेशन के हिस्से के रूप में, जो कि कुछ हफ्तों/महीनों में अपनी लॉग फ़ाइल को घुमाने की आवश्यकता होगी, मुझे आश्चर्य है कि यह logrotate.d में कॉन्फ़िगरेशन फ़ाइल होने से अलग है और इसके बजाय WatchedFileHandler का उपयोग कर रहा है।क्या पाइथन लॉग रोटेशन के लिए RotatingFileHandler और logrotate.d + WatchedFileHandler के बीच कोई अंतर है?

क्या वे कैसे काम करते हैं इसमें कोई अंतर है? क्या एक विधि सुरक्षित, अधिक कुशल, या दूसरे से बेहतर मानी जाती है?

+0

'logrotate.d' लॉगर बंद करने और प्रत्येक लॉग ईवेंट पर फ़ाइल फ़ाइल को फिर से खोलने पर निर्भर करता है। मुझे यकीन नहीं है कि मानक पायथन फ़ाइल लॉगर ऐसा करता है या नहीं। – tdelaney

+0

@tdelaney यह नहीं करता है, लेकिन 'लॉगिंग' के अंदर एक अच्छा विकल्प है, मेरे उत्तर – goncalopp

+0

के नीचे देखें मैंने देखा कि आपने 'वॉचडफाइलहैंडलर' का उल्लेख करने के लिए आपको प्रश्न संपादित किया है। क्या आपका मतलब 'RotatingFileHandler' था? – goncalopp

उत्तर

6

आपके कार्यक्रम का इच्छित दर्शक क्या है?

यदि आप डेस्कटॉप एप्लिकेशन बना रहे हैं और अधिकांश उपयोगकर्ताओं को लॉग पढ़ने की उम्मीद नहीं की जा सकती है, तो आपको इसे उनके लिए संभालना चाहिए। न केवल घूर्णन, बल्कि पुराने लोगों को भी हटा रहा है - आप गरीब उपयोगकर्ता की हार्ड ड्राइव को भरना नहीं चाहते हैं!

दूसरी ओर, यदि दर्शकों को यूनिक्स सिसडमिन का अनुभव होता है, तो आपको एक अलग दृष्टिकोण लेना होगा।

Sysadmins को उन सुविधाओं की आवश्यकता होगी जिन्हें आप संभवतः अनुमानित नहीं कर सकते हैं। उन्हें ईमेल द्वारा भेजें, उन्हें केवल ऐपेंड स्टोरेज के लिए लिखें, आप इसे नाम दें। इस श्रोताओं के लिए, यदि आपका लॉगिंग जितना संभव हो उतना लचीला है तो यह सबसे अच्छा है। लचीला (यूनिक्स में) का मतलब सरल है - तो बस एक फ़ाइल को लिखें और इसे मानें।

इसके अलावा, sysadmins फिर से सीखना नहीं चाहते कि कैसे फिर से लॉगिंग करना है। यहां तक ​​कि यदि आप इस तरह की सुविधा प्रदान करना चाहते हैं, तो सुनिश्चित करें कि डिफ़ॉल्ट इस धारणा के भीतर उचित है।

अंत में। tdelaney ने एक महत्वपूर्ण बिंदु उठाया: मानक FileHandler उस फ़ाइल पर अधिक ध्यान नहीं देता है जिस पर वह लिख रहा है। आपको WatchedFileHandler का उपयोग करना चाहिए, जो विशेष रूप से इस उद्देश्य के लिए लिखा गया था

+0

यह 'syslog' और 'NTEventLog' हैंडलर के लिए एक अच्छा तर्क है जो अपेक्षित स्थानों पर लॉग ऑन करता है। ऐप को '\ var \ log' तक पहुंच पहुंच नहीं होनी चाहिए, लेकिन मानक syslog कॉल के माध्यम से वैसे भी इसके लॉग लिख सकते हैं। – tdelaney

+0

अच्छा बिंदु, यह सीधे मेरे सवाल नहीं है। लेकिन मुझे लगता है कि आपका मतलब है कि उन्नत * निक्स उपयोगकर्ता लॉग-रोटेटिंग द्वारा लॉग रोटेटिंग तंत्र को संभालने की अपेक्षा करेंगे, अगर बिलकुल नहीं? – devhallo

+0

@tdelaney 'syslog' और' NTEventLog' वास्तव में एक बेहतर विकल्प हैं यदि आप स्पष्ट रूप से विभिन्न प्लेटफ़ॉर्म – goncalopp

1

RotatingFileHandler एक लॉग फ़ाइल को आकार एन तक बड़ा करने की अनुमति देता है, और फिर तत्काल और स्वचालित रूप से एक नई फ़ाइल पर घूमता है।

logrotate.d आमतौर पर प्रति दिन एक बार चलता है। अगर आप लॉग फ़ाइल के आकार को सीमित करना चाहते हैं, तो logrotate.d सबसे उपयोगी नहीं है क्योंकि यह केवल समय-समय पर चलता है।

+0

आपको ध्यान रखना चाहिए कि लॉगरोटेट का आकार विकल्प है, जो एक सेट आकार तक पहुंचने/उससे अधिक होने के बाद लॉग घुमाएगा .. संदर्भ साइट: http://www.thegeekstuff.com/2010/07/logrotate-examples/ – Mayhem

+0

लेकिन जब भी यह अपने निर्धारित समय के दौरान चलता है तो लॉग्रोटेट केवल घूर्णन करेगा। तो एक अंतराल अवधि है जहां लॉग बढ़ना जारी रख सकता है। प्रति घंटा चलाने के लिए लॉग्रोटेट बदलना कुछ हद तक कम हो जाएगा। – pfctdayelise

संबंधित मुद्दे