मैंने एक साधारण प्रोग्राम लिखा है, डेटेलॉग, लॉग की तारीख के आधार पर आम लॉग्स को विभाजित करने के लिए, जैसा कि वर्तमान सिस्टम समय के विपरीत है जब लॉग लाइन प्रोग्राम द्वारा देखी जाती है। यह क्रोनोलॉग या एक अन्य लॉग स्प्लिटर पहले से ही हो सकता है या नहीं भी हो सकता है लेकिन दूसरों को क्या करना है यह पता लगाने की तुलना में मेरा खुद का लिखना तेज था।
लॉग किए गए अनुरोध में वर्ष और महीने का उपयोग करते हुए, लाइन को फिर एक फ़ाइल या पाइप पर लिखा जाता है जिसमें लॉग डेटा से गणना की गई YYYMM शामिल होती है। हां यह सामान्य लॉग प्रारूप के लिए कुछ विशिष्ट है। पहले [तारीख को सीमांकित करने के लिए माना जाता है। IPv6 पतों से सावधान रहें। :)
लॉग विश्लेषण के लिए यह महत्वपूर्ण है कि प्रत्येक लॉग में वास्तव में केवल प्रत्येक संबंधित महीने के लिए अनुरोध शामिल हों, और प्रत्येक लॉग आदर्श रूप से सही विश्लेषण परिणामों के लिए पूरा होना चाहिए। लॉग स्प्लिटर के भीतर वर्तमान समय के आधार पर फ़ाइल नाम निर्धारित करना पर्याप्त नहीं है, क्योंकि 23:59:59 पर शुरू होने वाला एक धीमा अनुरोध गलत महीने के लिए लॉग फ़ाइल में समाप्त हो जाएगा।
मैं नेगनेक्स के साथ एक नामित फीफो के माध्यम से इसका उपयोग करता हूं जो कि nginx शुरू होने से पहले मौजूद है। ध्यान दें कि त्रुटि का पता लगाने और बफ़र्ड आउटपुट के बीच प्रोग्राम में एक ट्रेडऑफ़ है, जहां डेटागॉग वर्तमान में प्रदर्शन कारणों से बफर आउटपुट को पसंद करता है, इसलिए कृपया सुनिश्चित करें कि आपका सेटअप वास्तव में काम करता है, खासकर शेल पाइप का उपयोग करते समय, ताकि कोई लॉग डेटा न खोएं। ।
स्रोत कोड: http://stuge.se/datelog.c
कृपया मुझे कोई प्रतिक्रिया और पाठ्यक्रम पैच भेजने के लिए स्वतंत्र महसूस करें!