2009-04-23 18 views
27

मैंने अभी लॉग 4नेट का उपयोग करना शुरू कर दिया है और यह देखने के लिए देख रहा था कि आपने अपने लॉगिंग अनुभवों में क्या उपयोगी पाया है।लॉग 4नेट/लॉगिंग - आपने क्या उपयोगी पाया है?

लॉग के लिए आपको किस तरह की चीजें उपयोगी साबित हुई हैं; क्या शोर होने का अंत हुआ; आप विभिन्न लॉगिंग स्तरों का उपयोग कब करते हैं (DEBUG, INFO, आदि); क्या आपके पास प्रत्येक लॉग एंट्री के लिए मानक प्रारूप है; क्या आप हमेशा लॉग इन करते हैं?

कोई समस्या? सामान्य रूप से लॉगिंग पर अच्छे लेख?

अद्यतन: आप कहां लॉग इन करते हैं? क्या परिशिष्ट और क्यों?

धन्यवाद!

+0

यह शायद समुदाय विकी होना चाहिए। – DevinB

उत्तर

20

मैं रॉबर्ट कोज़ाक के उत्कृष्ट प्रतिक्रिया पर मेरी प्रतिक्रिया आधारित कर रहा हूँ, भले ही मैं काफी मेरे उसी तरह

प्रवेश करने का उपयोग नहीं करते मैं लॉग बयान के पांच प्रकार का उपयोग करें:

  • डीबग
  • जानकारी
  • चेतावनी
  • त्रुटि
  • घातक

डीबग बयान बयान जो उपयोगी होते हैं जब आप अभी भी एक आवेदन पत्र लिख रहे हैं कर रहे हैं, और आप क्या/अपने निष्पादन प्रवाह है, जहां की पूरी समझ की जरूरत है। आप लॉक के सामने कतार को मापने के लिए DEBUG कथन का उपयोग कर सकते हैं, या लॉग इन करने वाले उपयोगकर्ताओं के उपयोगकर्ता नामों की जांच कर सकते हैं, या किसी निश्चित SQL कॉल के पैरामीटर भी परेशान कर रहे हैं। DEBUG उन बयानों के लिए है जिन्हें आम तौर पर जाना जाने की आवश्यकता नहीं होती है।

INFO का उपयोग तब भी किया जाना चाहिए जब कोई जानकारी गलत हो तो बहुत उपयोगी हो, लेकिन यह इंगित नहीं करता कि कुछ भी गलत हो गया है। यदि आप बहुत से आईएनएफओ स्टेटमेंट्स का उपयोग करते हैं, तो आपके लॉग फूले और अनुपयोगी हो जाएंगे, इसलिए सावधान रहें। किसी भी महत्वपूर्ण जानकारी के लिए INFO का उपयोग करें जिसे आपको त्रुटि पर आवश्यकता होगी, और यह कहीं भी नहीं है जहां त्रुटि फेंक दी जाएगी।

WARN स्तर का उपयोग करें यदि आपने पुनर्प्राप्ति योग्य पाया है, लेकिन अभी भी अप्रत्याशित (कम से कम थोड़ा उम्मीद है, क्योंकि आपने इसे पकड़ा है)। यह इंगित करता है कि आपका एप्लिकेशन एक अनावश्यक स्थिति में हो सकता है, लेकिन आपको लगता है कि आप वर्तमान निष्पादन पथ को पुनर्प्राप्त/जारी रख सकते हैं।

ERROR जब भी आप एक अप्रत्याशित अपवाद प्राप्त करते हैं तो चेतावनियां होती हैं। यदि आप वर्तमान विधि को पुनर्प्राप्त/पुनः प्रयास कर रहे हैं, तो मैं WARN का उपयोग करने का सुझाव दूंगा। यदि आप रद्द/आउट कर रहे हैं, तो ERROR का उपयोग करें। यहां तक ​​कि यदि आपका प्रोग्राम जारी रख सकता है, तो ERROR का अर्थ है कि आप कुछ करने का प्रयास कर रहे थे और अस्वीकार कर दिए गए थे, और इसलिए अन्य चीजों पर जा रहे हैं।

FATAL उपयोग के लिए है जब आप इसे नीचे से नीचे के स्तर पर कुछ पकड़ते हैं, और आपको अनिवार्य रूप से पता नहीं चल रहा है कि क्या हो रहा है। इसका मतलब है कि आप निष्पादन जारी रखने का भी प्रयास नहीं कर रहे हैं, आप बस अपने निपटान में हर संभव जानकारी को लॉग करने जा रहे हैं और फिर शानदार तरीके से बाहर निकलने का प्रयास करें। FATAL त्रुटियों का अक्सर उपयोग नहीं किया जाता है क्योंकि आम तौर पर यदि आपको कोई त्रुटि मिलती है, तो आपके पास निष्पादन को चलाने और जारी रखने के लिए पर्याप्त जानकारी होती है। लेकिन उन परिदृश्यों में जहां भ्रष्टाचार हो सकता है यदि आप कोशिश करते हैं और जारी रखते हैं, तो एक FATAL त्रुटि लॉग करें, और फिर भागें।


जहां आप लॉग इन कर रहे हैं।मैं आमतौर पर अपने ऐप सर्वर पर 'साझा' फ़ोल्डर में लॉग ऑन करना चाहता हूं (अनुमति देने के बारे में सावधान रहें ताकि वे सार्वजनिक न हों) ताकि लॉग बहुत आसानी से पहुंच सकें और वे हमेशा डीबगिंग के लिए मेरा पहला कदम हैं। यदि संभव हो, तो इसे सेट अप करें ताकि चेतावनी, त्रुटि, या FATAL की कोई भी त्रुटि ईमेल द्वारा भेजी जा सके ताकि आपके पास 'उन्नत' चेतावनी होगी।

चीयर्स

2
  • सभी अपवाद कॉल स्टैक कि संभव है में उच्चतम स्तर पर ERROR स्तर पर लॉग इन करने के (आमतौर पर ईवेंट हैंडलर्स आदि में)
  • उपयोगकर्ता इनपुट कि का कारण बनता है एक समस्या WARN स्तर पर लॉग होता है (क्योंकि यह संकेत हो सकता है कि उपयोगकर्ता को बेहतर मार्गदर्शन करने के लिए हमें अपने यूआई को बेहतर बनाने की आवश्यकता है)
  • INFO स्तर (यानी कुछ भी जिसमें ग्राहक के क्रेडिट कार्ड को बिलिंग करना शामिल है, किसी तृतीय पक्ष एपीआई आदि से पूछताछ) शामिल है, जिसमें डेटा शामिल है (आम तौर पर एक्सएमएल धारावाहिक, किसी भी संवेदनशील जानकारी को हटाकर)
  • बहुत वर्बोज़ गतिविधियों DEBUG स्तर

में प्रवेश किया हुआ है हम शायद ही कभी FATAL स्तर प्रवेश का उपयोग करें।

हम आमतौर पर INFO स्तर पर ERROR स्तर पर तैनात करते हैं।

1

मैं लॉग बयान के चार प्रकार का उपयोग करें:

  • डीबग
  • जानकारी
  • चेतावनी
  • त्रुटि

मैं बयानों के लिए डीबग का उपयोग मैं एक डिबगिंग सत्र के दौरान जाँच करना चाहते हैं । आमतौर पर ये रिलीज बिल्ड के लिए नहीं रहते हैं। यह वह जगह है जहां मैं एक चर के मूल्य पर जांच कर रहा हूं या किसी विधि के अंदर और बाहर लॉग इन कर रहा हूं।

मैं कनेक्शन स्ट्रिंग्स, कॉन्फ़िगरेशन और जानकारी के सामान्य बिट्स के लिए INFO का उपयोग करता हूं जो मैं हमेशा लॉग में देखना चाहता हूं।

चेतावनी उन चीज़ों के लिए शायद ही कभी उपयोग की जाती है जिनके बारे में मुझे यकीन नहीं है या संभावित त्रुटि की स्थिति या शायद एक अपवाद की जांच भी करें जो मुझे पता है कि ढेर को संभाला जाएगा।

मैं आम तौर पर अपवाद पर रिपोर्ट करने के लिए एक कैच ब्लॉक में त्रुटि का उपयोग करता हूं और अपवाद में हैडलर जिसे कॉल किया जाता है जब कोई अन्य विधि अपवाद को संभाला नहीं जाता है।

2

Apache Chainsaw के साथ Log4Net। चेनसॉ रीयलटाइम से आपके लॉग संदेश देखने के लिए एक डैशबोर्ड है। यह कई ऐप्स को संभाल सकता है, ऑन-द-फ्लाई फ़िल्टरिंग कर सकता है, और कुछ अन्य आसान सुविधाएं।

यदि संदेह है, तो इसे लॉग करें (अधिमानतः DEBUG या INFO जैसे उच्च स्तर पर या अपना स्वयं का स्तर बनाएं)। कॉन्फ़िगरेशन फ़ाइल में आउटपुट प्राप्त करने के लिए आप कॉन्फ़िगर कर सकते हैं।

0

मैंने पाया कि मैं विकास के शुरू में Log4PostSharp उपयोग करने के लिए परियोजनाओं की स्थापना द्वारा मूल्यवान डेटा मिलता है। असल में, PostSharp इंजन के साथ संयुक्त, आप विधियों पर एक विशेषता डाल सकते हैं और यह पैरामीटर के साथ सभी कॉल लॉग और मूल्य वापस कर देगा। मैंने इसे Assemblyसभा फाइल में डीबग स्तर पर सेट किया है ताकि यह सभी विधि कॉल लॉगिंग करने के लिए डिफ़ॉल्ट हो जो संपत्ति गेटर्स या सेटर्स नहीं हैं।

अगर अनियंत्रित छोड़ दिया गया है तो यह बड़ी मात्रा में डेटा उत्पन्न कर सकता है (मुझे यकीन है कि मैं डीबग स्तर पर कुछ और लॉग नहीं करता हूं ताकि इसे चालू और बंद करना आसान हो और इसे रिलीज़ बिल्ड से पूरी तरह हटा दें यदि प्रदर्शन है एक मुद्दा) लेकिन एक अच्छा लॉग दर्शक के साथ - मैं BareTail का उपयोग करता हूं - आप जटिल त्रुटियों को बहुत जल्दी इंगित कर सकते हैं। इस मुद्दे को निर्धारित करने में यह विशेष रूप से अच्छा है कि आपके सभी अलग-अलग धागे बिंदु पर एक समस्या उत्पन्न हुई थीं।

मैं रोलिंग फ़ाइल एपेंडर का उपयोग करता हूं ताकि सबसे हालिया डेटा हमेशा हास्यास्पद आकारों वाली फाइलों के बिना उपलब्ध हो।

2

ELMAH नामक एएसपी.नेट के लिए एक और लॉगिंग फ्रेमवर्क भी है। हालांकि यह एक वास्तविक लॉगिंग ढांचा नहीं है, लेकिन अपवाद ढांचे के अधिक है।

कूल विशेषताओं में शामिल हैं:

  • 0 कोड/recompiling इसे लागू करने के
  • कॉन्फ़िगर एसक्यूएल
  • करने के लिए त्रुटियों डंप करने के लिए कर सकते हैं
  • त्रुटियों त्रुटियों के लिए
  • आरएसएस फ़ीड देखने के लिए एक वेब ui है
0

एक और लॉग 4नेट लॉग व्यूअर (अपाचे चेनसॉ के अलावा) है जो मेरी कंपनी कुछ समय से उपयोग कर रही है, यह कॉलल है डी "लॉग 4नेट डैशबोर्ड" और एक नार्वेजियन कंपनी (मुझे लगता है) द्वारा विकसित किया जा रहा है जिसे फ़ैटनेट कहा जाता है, यह वेबसाइट http://www.l4ndash.com है।

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

फ़ैकेटनेट के पास विभिन्न लाइसेंस हैं, इस पर निर्भर करते हुए कि कितने उपयोगकर्ता डैशबोर्ड तक पहुंचने में सक्षम हैं, और उनका एंटरप्राइज़ लाइसेंस वास्तव में महंगा नहीं है (यह $ 600 मुझे लगता है)। कई लॉगों तक पहुंचने की अपनी क्षमता को देखते हुए यह एक विकास टीम के लिए एक प्रमुख संपत्ति हो सकती है जो कई माध्यमों से बड़े पैमाने पर वेबसाइटों का विकास और निगरानी कर रही है।

0

एक और वास्तव में उपयोगी एपेंडर DBAppender है जो एक डेटाबेस में जानकारी लॉग कर सकता है, जो एक लॉग पूछताछ के लिए स्पष्ट रूप से अविश्वसनीय रूप से उपयोगी है।

this article में इस पर अधिक जानकारी।

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