प्रदर्शन पर JSON प्रभाव में प्रवेश


22

मैं JSON में लॉगिंग के बारे में अधिक से अधिक लेख देखता हूं। आप NodeJS ब्लॉग पर भी पा सकते हैं। हर कोई इसे इतना पसंद क्यों करता है? मैं केवल और अधिक कार्यों को शामिल होते हुए देख सकता हूं:

  • एक दो नई वस्तुएं बनाई जा रही हैं।
  • स्ट्रिंग ऑब्जेक्ट्स, जिसमें या तो स्ट्रिंग की लंबाई या एकाधिक स्ट्रिंग आवंटन की गणना शामिल है।
  • सभी बकवास है कि बनाया गया था।

क्या JSON लॉगिंग और नियमित स्ट्रिंग लॉगिंग का उपयोग करते समय प्रदर्शन पर कोई परीक्षण होता है? क्या लोग एंटरप्राइज़ प्रोजेक्ट्स में JSON (लॉगिंग के लिए) का उपयोग करते हैं?

जवाबों:


36

JSON लॉगिंग आपको लॉग फाइल प्रोग्राम को पार्स करने की क्षमता देता है भले ही प्रारूप समय में बदल गया हो

एक अच्छा उदाहरण अपाचे लॉग्स है। डिफ़ॉल्ट रूप से Apache commonaccess.log के लिए प्रारूप का उपयोग करता है :

"%h %l %u %t \"%r\" %>s %b"

कहें कि आपने एक ऑफ़लाइन पार्सर बनाया है जो उन लॉग फ़ाइलों में से एक लेता है और उसमें से कुछ आँकड़ों की गणना करता है।

कुछ समय पर आप अपने आवेदन में उप-डोमेन का परिचय देते हैं virtual_hostऔर अपने लॉग में शामिल होते हैं (यदि आप उप-डोमेन में से किसी एक के साथ समस्याएं आती हैं, तो आप डीबग कर सकते हैं):

"%v %h %l %u %t \"%r\" %>s %b"

आपका पार्सर उपयोग नहीं करता है virtual_hosts, लेकिन आपको अभी भी अपने पार्सर को इसके अनुकूल बनाना होगा:

  • नया लॉग प्रारूप स्वीकार करें (लॉग प्रारूप %vके प्रमुख पर ध्यान दें )
  • अभी भी पुराने लॉग प्रारूप का समर्थन करें (पुराने लॉग फ़ाइलों के लिए)

लेकिन यदि आप JSON में लॉग इन करते हैं, तो आपका पार्सर जोड़े गए फ़ील्ड पर ध्यान नहीं देगा और नए लॉग के साथ-साथ पुराने लॉग को भी ख़ुशी से पार्स कर सकता है। और कुछ अन्य पार्सर जोड़े गए फ़ील्ड का उपयोग कर सकते हैं यदि वे मौजूद हैं

और निश्चित रूप से आपके लिए , JSON regexpsको पार्स करना स्ट्रिंग लॉग को लिखने से आसान है ।


10
एकदम सही उदाहरण।
फ्लोरियन मार्गाइन

27

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

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

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


1
मुझे यकीन है कि आप माइक्रोसेकंड दूर फेंकने के बारे में ज्यादा परवाह नहीं करते हैं ...
Rhymoid

@ राइमॉइड नहीं, मैं वास्तविक समस्याओं को हल करने के लिए अपने समय का उपयोग करना पसंद करता हूं।
थोरस्टेन मुलर

3
@ राइमॉइड ऐसी परिस्थितियां हैं जहां माइक्रोसेकंड को फेंकना बुरा है, निश्चित रूप से। मुझे भी लगता है कि ९९.९% प्रोग्रामर कोड लिखने जा रहे हैं, जहां यह नहीं है। उदाहरण के लिए, अधिकांश वेब फ्रेमवर्क मुझे उनकी आवश्यकता से अधिक काम करते हैं, और जो ओवरहेड हैं। लेकिन, इसके साथ परीक्षणों और सुरक्षा का एक पूरा सूट आता है, साथ ही यह मुझे खुद को कोड करने में सैकड़ों घंटे बचाता है। अतिरिक्त लागत के लिए मेरी कंपनी इसे खरोंच से बनाने में खर्च नहीं करती है, वे ज़रूरत पड़ने पर हार्डवेयर को दोगुना कर सकते हैं (हालांकि यह शायद इससे भी तेज है कि मैं अपने आप को किसी भी तरह से बना सकता हूं ...) आखिरकार, माइक्रोसेकंड कोई फर्क नहीं पड़ता।
corsiKa
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.