संरचित दृष्टिकोण के साथ दो मौलिक अग्रिम हैं जिन्हें अतिरिक्त प्रयास के बिना (कभी-कभी चरम स्तर के) पाठ लॉग का उपयोग करके अनुकरण नहीं किया जा सकता है।
घटना के प्रकार
जब आप log4net के साथ दो ईवेंट लिखते हैं जैसे:
log.Debug("Disk quota {0} exceeded by user {1}", 100, "DTI-Matt");
log.Debug("Disk quota {0} exceeded by user {1}", 150, "nblumhardt");
ये समान पाठ का उत्पादन करेंगे:
Disk quota 100 exceeded by user DTI-Matt
Disk quota 150 exceeded by user nblumhardt
लेकिन, जहाँ तक मशीन प्रसंस्करण का सवाल है, वे अलग-अलग पाठ की सिर्फ दो पंक्तियाँ हैं।
आप सभी "डिस्क कोटा से अधिक" ईवेंट ढूंढना चाह सकते हैं, लेकिन ईवेंट की तलाश का सरलीकृत मामला like 'Disk quota%'
जैसे ही किसी अन्य ईवेंट के रूप में दिखाई देगा, वैसे ही नीचे गिर जाएगा:
Disk quota 100 set for user DTI-Matt
पाठ लॉगिंग उन सूचनाओं को निकाल देता है जो हमारे पास शुरुआत में घटना के स्रोत के बारे में होती हैं, और जब लॉग को आमतौर पर अधिक से अधिक विस्तृत अभिव्यक्ति के साथ पढ़ना होता है, तो इसे फिर से संगठित करना पड़ता है।
इसके विपरीत, जब आप निम्नलिखित दो सेरिलॉग घटनाएँ लिखते हैं:
log.Debug("Disk quota {Quota} exceeded by user {Username}", 100, "DTI-Matt");
log.Debug("Disk quota {Quota} exceeded by user {Username}", 150, "nblumhardt");
ये लॉग 4net संस्करण के समान पाठ आउटपुट का उत्पादन करते हैं, लेकिन पर्दे के पीछे, "Disk quota {Quota} exceeded by user {Username}"
संदेश टेम्पलेट दोनों घटनाओं द्वारा किया जाता है।
एक उपयुक्त सिंक के साथ, आप बाद में क्वेरीज़ लिख सकते हैं where MessageTemplate = 'Disk quota {Quota} exceeded by user {Username}'
और ठीक उसी तरह की घटनाओं को प्राप्त कर सकते हैं जहां डिस्क कोटा पार किया गया था।
यह हर लॉग घटना के साथ पूरा संदेश टेम्पलेट स्टोर करने के लिए सुविधाजनक हमेशा नहीं है, इसलिए कुछ डूब एक अंकीय में संदेश टेम्पलेट हैश EventType
मूल्य (जैसे 0x1234abcd
), या, आप करने के लिए लॉगिंग पाइप लाइन के लिए एक Enricher जोड़ सकते हैं अपने आप को ऐसा करने के ।
यह नीचे दिए गए अगले अंतर से अधिक सूक्ष्म है, लेकिन बड़े लॉग वॉल्यूम के साथ काम करते समय बड़े पैमाने पर शक्तिशाली है।
संरचित डेटा
डिस्क स्थान उपयोग के बारे में दो घटनाओं पर विचार करने के बाद, किसी विशेष उपयोगकर्ता के लिए क्वेरी के पाठ लॉग का उपयोग करना काफी आसान हो सकता है like 'Disk quota' and like 'DTI-Matt'
।
लेकिन, उत्पादन निदान हमेशा इतने सीधे नहीं होते हैं। कल्पना करें कि उन घटनाओं को खोजना आवश्यक है जहां डिस्क कोटा 125 एमबी से नीचे था?
सेरिलॉग के साथ, यह सबसे अधिक सिंक में संभव है जो एक प्रकार का उपयोग करता है:
Quota < 125
एक रेगुलर एक्सप्रेशन से क्वेरी इस तरह का निर्माण है संभव है, लेकिन यह अंतिम उपाय के एक उपाय किया जा रहा समाप्त होता है थकाऊ तेजी से हो जाता है और आम तौर पर।
अब इसमें एक घटना प्रकार जोड़ें:
Quota < 125 and EventType = 0x1234abcd
आप यहां यह देखना शुरू करते हैं कि कैसे इन क्षमताओं को सीधे-सीधे तरीके से संयोजित किया जाता है ताकि लॉग के साथ उत्पादन डिबगिंग एक प्रथम श्रेणी के विकास गतिविधि की तरह महसूस हो।
एक और लाभ, शायद सामने वाले को रोकने के लिए उतना आसान नहीं है, लेकिन एक बार रीबैक्स हैकरी की भूमि से उत्पादन डिबगिंग को हटा दिया गया है, डेवलपर्स लॉग को बहुत अधिक महत्व देते हैं और उन्हें लिखते समय अधिक देखभाल और विचार का उपयोग करते हैं। बेहतर लॉग -> बेहतर गुणवत्ता वाले अनुप्रयोग -> चारों ओर अधिक खुशी।