Log4net और ELMAH में क्या अंतर है?


108

कुछ लोग log4net के बजाय ELMAH का उपयोग कर रहे हैं । क्या यह बेहतर बनाता है?

स्टैक ओवरफ्लो प्रश्न के उत्तर में मुझे ईएलएमएएच के बारे में पता चला कि मैं सी # में लॉगिंग कैसे करूं?



अब वह .net कोर तस्वीर में है, क्या परिदृश्य बदलता है? (elmah जनवरी 2018 के अनुसार .net कोर का समर्थन नहीं करता है)।
चैतन्य गडकरी

जवाबों:


92

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

Log4net का उपयोग अपवाद लॉगिंग के लिए भी किया जा सकता है, हालांकि आपको अपने वेब एप्लिकेशन में प्लग करने के लिए अपने हैंडलर को रोल करना होगा। Log4net ELMAH पर चमक जाएगा यदि आपको अन्य प्रकार की जानकारी लॉगिंग करने की आवश्यकता है क्योंकि log4net एक सामान्य प्रयोजन लॉगिंग फ्रेमवर्क है। Log4net का उपयोग लगभग किसी भी .NET अनुप्रयोग में किया जा सकता है।


3
log4net आपको अधिक नियंत्रण देता है।
डार्थवेदर

6
आप इस ELMAH परिशिष्ट का उपयोग करके log4net के लिए दोनों दुनिया के सर्वश्रेष्ठ प्राप्त कर सकते हैं। बस आपको log4net के साथ क्या पसंद है (डिबग, जानकारी, चेतावनी, त्रुटि) लॉग इन करें लेकिन इसे ELMAH nuget.org/packages/elmahappender_log4net_1.2.10
Sturla

111

Log4Net एक सामान्य प्रयोजन लॉगिंग फ्रेमवर्क है जिसका एपीआई आपके एप्लिकेशन (वेब, कंसोल, डीएलई, आदि) के भीतर उपयोग करने के लिए है।

logger.Debug("Some low level debug message...");
logger.Info("Some basic info");
logger.Warn("Some business logic problem, but not critical");
logger.Error("An unexpected error");

एएलएमएएच एक विनीत आईआईएस प्लगइन है जो विशेष रूप से एक वेब एप्लिकेशन में अपवाद लॉगिंग के लिए है । आपको अपने एप्लिकेशन के भीतर ELMAH का संदर्भ नहीं दिखाई देगा, इसमें ऐसा API नहीं है जिसे आप इंटर करते हैं। यह व्यवहार में बोल्ट करने के लिए मॉड्यूल और हैंडलर IIS एक्सटेंशन पॉइंट का उपयोग करता है। इसके अलावा इसमें आपके वेब एप्लिकेशन में हुई त्रुटियों को देखने के लिए एक वेब फ्रंट-एंड है। Log4Net में फ्रंट-एंड नहीं है, बस विभिन्न प्रकार के लॉग सिंक (एपेंडर्स) हैं जो लॉग फाइल, एक syslog सर्वर, एक डेटाबेस, आदि जैसी चीजों के लिए आपके लॉग संदेश भेज सकते हैं।


23
एक सुधार, एल्माह के पास एक एपि है जो डेवलपर के साथ बातचीत कर सकता है। उदाहरण के लिए, एलमाह आपी के माध्यम से सिग्नलिंग प्राप्त की जाती है।
एड डेग्वेन

8
एक और सुधार? ELMAH एक .NET HttpModule / HttpHandler है। यह एक IIS प्लगइन नहीं है। ARR एक प्लगइन है। एल्माह नहीं।
मैक्सिम रूइलर

टिप्पणियों पर आपकी क्या प्रतिक्रिया है?
पीटर मोर्टेंसन

36

महत्वपूर्ण अंतर यह है कि ईएलएमएएच अनहेल्ड एप्लिकेशन अपवादों को लॉग करता है; log4net जो भी आप इसे लॉग करने के लिए कहते हैं वह लॉग करता है। आप लॉग्डनेट को लॉग इन अनहैंड किए गए अपवादों को कॉन्फ़िगर करने के लिए कॉन्फ़िगर कर सकते हैं, लेकिन ELMAH बॉक्स से बाहर उपयोगी जानकारी का खजाना प्राप्त करता है।


1
यदि आप ठीक से कॉन्फ़िगर करते हैं, तो ELMAH उपयोगी जानकारी का खजाना प्राप्त करता है। उसी समय के लिए, आप अधिक नियंत्रण के साथ log4net के साथ भी ऐसा कर सकते हैं।
डार्थवेदर

DarthVader - क्या आपके पास एक नमूना log4net कॉन्फ़िगरेशन है जो समान कार्य करता है?
जेसन

5
ELMAH बॉक्स के बाहर उपयोगी जानकारी का एक धन नहीं विन्यास के साथ कब्जा कर लेता है। अतिरिक्त कॉन्फ़िगरेशन के साथ, यह बिना किसी अपवाद के और हैंडल किए गए अपवादों को नियंत्रित करेगा।
ट्रेवर डे कोइकोक

5

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

ELMAH केवल तभी काम करता है जब उसके पास HttpContext की पहुंच होती है जो WCF सेवाओं में प्राप्त करना कठिन हो सकता है। तो तुम वैसे भी WCF में कुछ अन्य लकड़हारा का उपयोग कर समाप्त होगा। केवल एक समाधान का उपयोग क्यों न करें जो अधिक सार्वभौमिक है।


4

ELMAH:

  • वेब एप्लीकेशन

log4net:

  • वेब एप्लीकेशन

  • विंडोज एप्लिकेशन

अतिरिक्त संदर्भ: ref_1 Ref_2


1

ELMAH का उपयोग विशेष रूप से वेब अनुप्रयोगों के लिए किया जाता है, जबकि log4net का उपयोग वेब और विंडोज दोनों अनुप्रयोगों पर किया जाता है। ELMAH के पास वेब एप्लिकेशन में log4net की तुलना में कई अधिक फायदे हैं।


5
क्या हैं वो फायदे? मैं जल्द ही ASP.NET करूंगा, इसलिए मैं आपकी शिक्षित राय जानना चाहूंगा। मैं अभी भी .NET में भीख माँग रहा हूँ, इसलिए इसकी व्याख्या करना मुश्किल है कि वे अपनी साइटों पर क्या कह रहे हैं।
14

आप बिना कोई कोड लिखे भी रिपोर्ट देख सकते हैं। यहाँ एल्म सुविधाओं को देखें। code.google.com/p/elmah
Adeel

एल्माह बहुत सीमित है और केवल "एवांटेज" रिपोर्ट है, लेकिन यह उन वेब ऐप्स तक सीमित है, जिनकी पहुंच HttpContext तक है। आपके पास अन्य लॉगर लॉग डेटा हो सकते हैं जो कई अन्य स्रोतों पर रिपोर्ट किए जा सकते हैं।
डस्टिन डेविस

0

ईएलएमएएच बहुत शक्तिशाली है, लेकिन यह भी बहुत विशिष्ट है कि यह क्या करता है। यह आपके लिए बहुत काम करता है, जबकि मेरा मानना ​​है कि Log4Net को आपको त्रुटि से निपटने और लॉगिंग करने की आवश्यकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.