लॉग फाइलें किसी भी गंभीर अनुप्रयोग का एक महत्वपूर्ण हिस्सा हैं: यदि ऐप में लॉगिंग कोई अच्छा है, तो वे आपको देखते हैं कि कौन सी महत्वपूर्ण घटनाएं हुई हैं और कब; क्या त्रुटियां हुईं; और सामान्य अनुप्रयोग स्वास्थ्य जो किसी भी निगरानी से परे डिज़ाइन किया गया है, यह एक समस्या के बारे में सुनने के लिए आम है, एप्लिकेशन के अंतर्निहित डायग्नोस्टिक्स की जाँच करें (पॉप अपने वेब कंसोल को खोलें या जेएमएक्स जैसे डायग्नोस्टिक टूल का उपयोग करें), और फिर चेकिंग का सहारा लें लॉग फ़ाइल।
यदि आप एक गैर-पाठ प्रारूप का उपयोग करते हैं, तो आपको तुरंत बाधा का सामना करना पड़ता है: आप द्विआधारी लॉग कैसे पढ़ते हैं? लॉग-रीडिंग टूल के साथ, जो आपके प्रोडक्शन सर्वर पर नहीं है! या यह है, लेकिन ओह प्रिय, हमने एक नया क्षेत्र जोड़ा है और यह पुराना पाठक है। क्या हमने यह परीक्षण नहीं किया? हां, लेकिन किसी ने इसे यहां तैनात नहीं किया। इस बीच, आपकी स्क्रीन आपको पिंग करने वाले उपयोगकर्ताओं के साथ प्रकाश करना शुरू कर रही है।
या शायद यह आपका ऐप नहीं है, लेकिन आप समर्थन कर रहे हैं और आपको लगता है कि आपको पता है कि यह दूसरी प्रणाली है, और डब्ल्यूटीएफ? लॉग एक द्विआधारी प्रारूप में हैं? ठीक है, विकी पेज पढ़ना शुरू करें, और आप कहाँ शुरू करते हैं? अब मैंने उन्हें अपनी स्थानीय मशीन पर कॉपी कर लिया है, लेकिन वे भ्रष्ट हैं? क्या मैंने किसी तरह का गैर-बाइनरी ट्रांसफर किया है? या लॉग-रीडिंग टूल गड़बड़ है?
संक्षेप में, पाठ-पढ़ने के उपकरण क्रॉस-प्लेटफ़ॉर्म और सर्वव्यापी हैं, और लॉग अक्सर लंबे समय तक रहते हैं और कभी-कभी जल्दी में पढ़ने की आवश्यकता होती है । यदि आप एक द्विआधारी प्रारूप का आविष्कार करते हैं, तो आप अच्छी तरह से समझे जाने वाले और उपयोग में आसान उपकरणों की एक पूरी दुनिया से कट जाते हैं। जरूरत पड़ने पर कार्यक्षमता का गंभीर नुकसान।
अधिकांश लॉगिंग वातावरण एक समझौता करते हैं: वर्तमान लॉग को पढ़ने योग्य और वर्तमान में रखें, और पुराने को संकुचित करें। इसका मतलब है कि आपको संपीड़न का लाभ मिलता है - और भी, वास्तव में, क्योंकि एक द्विआधारी प्रारूप लॉग संदेशों को छोटा नहीं करेगा। इसी समय, आप कम और जीआरईपी और इतने पर उपयोग कर सकते हैं ।
तो, बाइनरी का उपयोग करने से क्या संभावित लाभ उत्पन्न हो सकते हैं? अंतरिक्ष दक्षता की एक छोटी राशि - तेजी से महत्वहीन। कम (या छोटा) लिखते हैं? खैर, हो सकता है - वास्तव में, लिखने की संख्या डिस्क-कमिट की संख्या से संबंधित होगी, इसलिए यदि लॉग-लाइन डिस्क को ब्लॉक करने की तुलना में काफी छोटी है, तो एसएसडी वैसे भी नए ब्लॉक को असाइन करेगा। तो, बाइनरी एक उपयुक्त विकल्प है अगर:
- आप बड़ी मात्रा में संरचित डेटा लिख रहे हैं
- लॉग को विशेष रूप से जल्दी से बनाया जाना है
- आपको "समर्थन शर्तों" के तहत उनका विश्लेषण करने की आवश्यकता नहीं है
लेकिन यह अनुप्रयोग लॉगिंग की तरह कम लग रहा है; ये आउटपुट फाइल या एक्टिविटी रिकॉर्ड हैं। उन्हें एक फ़ाइल में रखना शायद उन्हें डेटाबेस में लिखने से केवल एक कदम दूर है।
संपादित करें
मुझे लगता है कि "प्रोग्राम लॉग" (लॉगिंग फ्रेमवर्क के अनुसार) बनाम "रिकॉर्ड" (एक्सेस लॉग्स, लॉगिन रिकॉर्ड आदि) के बीच यहां एक सामान्य भ्रम है। मुझे संदेह है कि प्रश्न उत्तरार्द्ध से सबसे अधिक निकटता से संबंधित है, और उस मामले में यह मुद्दा बहुत कम परिभाषित है। यह एक संदेश-रिकॉर्ड या गतिविधि लॉग के लिए पूरी तरह से स्वीकार्य है एक कॉम्पैक्ट प्रारूप में, विशेष रूप से जब यह समस्या निवारण के बजाय अच्छी तरह से परिभाषित और विश्लेषण के लिए उपयोग होने की संभावना है। ऐसा करने वाले टूल में शामिल हैं tcpdump
और यूनिक्स सिस्टम मॉनिटर sar
। दूसरी ओर प्रोग्राम लॉग बहुत अधिक तदर्थ हो जाते हैं।