2009-02-08 19 views
10

मैं जो भी कह सकता हूं उससे न तो Log4Perl या इसके किसी भी संबंधित मॉड्यूल सीपीएएन में & लॉग फ़ाइलों का संपीड़न घुमाता है।मैं लॉग 4perl लॉग फ़ाइलों को घुमाने और संपीड़ित कैसे कर सकता हूं?

रोटेशन का उपयोग करके पूरा किया जा सकता है:

  1. Log::Log4perl::Appender::File
  2. Log::Dispatch::FileRotate

लेकिन न तो मॉड्यूल रोटेशन और संपीड़न का समर्थन करता है। (लॉग :: डिस्पैच :: FileRotate की अपनी सूची सूची में है, लेकिन यह वर्तमान में कार्यान्वित नहीं है)।

लॉग इन :: लॉग 4perl :: Appender :: फ़ाइल के recreate_check_interval या recreate_check_signal का उपयोग कर लिनक्स में मानक Logrotate सुविधा का उपयोग करके ऐसा करना संभव है। , यहां तक ​​कि उच्च लोड के साथ एक मशीन पर, के रूप में एक बार फ़ाइल ले जाया जाता है, log4perl ही filehandle करने के लिए लॉगिंग जारी रहेगा जब तक संकेत है -

प्रारंभिक परीक्षण से, यह delaycompress विकल्प के साथ Logrotate का उपयोग कर चाल करना होगा की तरह दिखता है cought।

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

आपको क्या लगता है? क्या ऐसे अन्य विकल्प हैं जिनके बारे में हमने नहीं सोचा था?

+0

सीधे सवालों का जवाब नहीं दे रहा है, लेकिन यहां लॉग 4perl कॉन्फ़िगरेशन के बहुत अच्छे उदाहरण हैं जो लॉग फाइलों को घूर्णन करने के पते को संबोधित करते हैं http://www.netlinxinc.com/netlinx-blog/52-perl/126-eight-loglog4perl-recipes। एचटीएमएल –

+0

... और कुछ महान व्यंजनों http://log4perl.sourceforge.net/releases/Log-Log4perl/docs/html/Log/Log4perl/FAQ.html –

उत्तर

3

क्या आपने लॉग इन डिस्पैच :: फाइलरोटेट के रखरखाव के साथ काम करने के बारे में सोचा है ताकि सुविधाओं को याद किया जा सके और आपको इसकी आवश्यकता हो? यह सब के बाद खुला स्रोत है। :)

यदि आप स्वयं से निपटना नहीं चाहते हैं, तो विभिन्न सीपीएएन समर्थन परामर्शदाता हैं जो आपके लिए करते हैं।

+0

लॉग पर लॉग :: डिस्पैच लॉग :: डिस्पैच :: कॉन्फ़िगर मूल रूप से Log4Perl का एक सेन संस्करण है। आप मूल रूप से एल :: डी और एल 4 पी फीचर्स का संघ प्राप्त करते हैं, जो जैसा लगता है जो आप यहां चाहते हैं। – jrockway

3

मैंने लॉग इन :: डिस्पैच :: फ़ाइलरोटेट के लेखक से यहां संपर्क किया है, जैसा कि यहां बताया गया है, और उन्होंने कारण बताया कि संपीड़न अभी तक लॉग :: डिस्पैच :: फ़ाइलरोटेट में क्यों लागू नहीं हुआ है।

मूल रूप से, घूर्णन के बाद सही संपीड़न, संपीड़न के दौरान चल रही प्रक्रिया को अवरुद्ध कर सकता है, जो कि बहुत महंगा है।

सुझाए गए विकल्प लॉग :: डिस्पैच :: फ़ाइलरोटेट के उपयोगकर्ता को रोटेशन के बाद फ़ाइल पर मनमाने ढंग से एप्लिकेशन निष्पादित करने की अनुमति देने के लिए थे, इस प्रकार यह किसी अन्य गैर अवरोधन प्रक्रिया में कर रहा था।

एक और सुझाव था कि फाइल सिस्टम ट्रिगर (जैसे inotify) संपीड़न को ट्रिगर करें जब फ़ाइल मुख्य प्रक्रिया द्वारा लिखने के लिए बंद हो।

फिर भी एक और सुझाव, एक gzip पाइप, या perl gzip मॉड्यूल के माध्यम से संपीड़ित लॉग फ़ाइल लिखना है। यह काम करता है, लेकिन कुछ समस्याएं पैदा करता है (grep/less) काम नहीं करेगा। zgrep और zless काम करेगा, लेकिन zgrep एक बदसूरत चेतावनी देता है जब एक gzip फ़ाइल पर grepping जो अभी भी लेखन के लिए खुला है। फ़ाइल पर "पूंछ" का उपयोग करना भी काम नहीं करेगा - इसलिए यह विकल्प व्यावहारिक नहीं है।

5

सालों से, मैंने पाया है कि आप लगभग हमेशा बाहरी लॉग 4 रोटेशन के साथ लॉग फ़ाइल रोटेशन के लिए विधियों का उपयोग करना चाहते हैं। आप बस बहुत से सूक्ष्म मुद्दों से बचें (लॉग देरी, अनुमति समस्याएं) कि आंतरिक लॉग अनिवार्य रूप से दौड़ता है।

आपने लिनक्स पर लॉग्रोटेट के साथ काम करने वाले दो तरीकों का उल्लेख किया है, क्यों नहीं उनके साथ रहना? Log4perl FAQ describes using newsyslog जो कि फ्रीबॉट के फ्रीबॉर्ड्स समकक्ष है और समान सुविधाएं प्रदान करता है।

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