किसी के पास दोनों के लिए अनुभव है? वे एक-दूसरे के खिलाफ कैसे ढेर हो जाते हैं?
हम उनमें से एक उद्यम अनुप्रयोग में प्रवेश करने के लिए उपयोग करने की योजना बना रहे हैं।
संदर्भ:
संपादित करें: हमारे पास nlog या log4net के लिए कोई मौजूदा निर्भरता नहीं है।
किसी के पास दोनों के लिए अनुभव है? वे एक-दूसरे के खिलाफ कैसे ढेर हो जाते हैं?
हम उनमें से एक उद्यम अनुप्रयोग में प्रवेश करने के लिए उपयोग करने की योजना बना रहे हैं।
संदर्भ:
संपादित करें: हमारे पास nlog या log4net के लिए कोई मौजूदा निर्भरता नहीं है।
जवाबों:
मुझे हाल ही में एक आगामी परियोजना के लिए "कुछ लॉगगिन को प्रोटोटाइप" करने का काम सौंपा गया था। मेरे पास कोई लॉगिंग फ्रेमवर्क अनुभव नहीं था। मैंने कुछ दिनों के लिए Log4Net, NLog, और एंटरप्राइज लाइब्रेरी पर ट्यूटोरियल, टॉय ऐप्स, आदि के माध्यम से शोध किया। 3-4 सप्ताह बाद वापस आया और उन्हें एक साथ एक कोसिव डेमो में रखा। उम्मीद है कि इसमें से कुछ आपके लिए उपयोगी है।
हमारी परियोजना के लिए मेरी सिफारिश यह है:
यह इन निष्कर्षों (राय!) पर आधारित है:
तो जाहिर है मैं अब तक NLog पसंद है। एक और समाधान उपलब्ध होने के बावजूद इसका उपयोग करने के लिए पर्याप्त नहीं है, हालांकि।
एक महत्वपूर्ण विचार जो बहुत चर्चा में नहीं आया है वह है समर्थन और अपडेट।
19 अप्रैल 2006 को संस्करण 1.2.10 से प्रकाशित होने के बाद Log4Net को अपडेट नहीं किया गया है ।
इसके विपरीत, 2006 से NLog को सक्रिय रूप से समर्थित किया गया है, जल्द ही NLog 2.0 को कई प्लेटफार्मों का समर्थन करेगा, जो लॉग 4नेट अंतिम बार होने पर मौजूद नहीं थे :
हाल ही में दोनों ढांचे के साथ एक अनुभव होने के बाद, मैंने सोचा कि मैं प्रत्येक रूपरेखा पर अपने विचार साझा कर सकता हूं।
मुझे मौजूदा वेब एप्लिकेशन के लिए लॉगिंग फ्रेमवर्क का मूल्यांकन करने के लिए कहा गया था, मैंने विभिन्न ऑनलाइन मंचों से गुजरने के बाद अपनी पसंद को NLog (v2.0) और log4net (v1.2.11) तक सीमित कर दिया। यहाँ मेरे निष्कर्ष हैं:
NLog के साथ सेटिंग करना / शुरू करना आसान है। आप उनकी वेबसाइट पर गेटिंग स्टार्ट ट्यूटोरियल के माध्यम से जाते हैं और आप काम करते हैं। आप एक उचित विचार प्राप्त करते हैं, कि बात कैसे हो सकती है। विन्यास फाइल इतनी सहज है कि कोई भी विन्यास को समझ सकता है। उदाहरण के लिए: यदि आप आंतरिक लॉगिंग को सेट करना चाहते हैं, तो आप ध्वज को Nlog config फाइल के हेडर नोड में सेट करते हैं, जो कि आप इसे होने की उम्मीद करेंगे। Log4net में, आप web.config के ऐपसेटिंग सेक्शन में विभिन्न झंडे सेट करते हैं।
Log4net में, आंतरिक लॉगिंग आउटपुट आउटपुट टाइमस्टैम्प जो कष्टप्रद है। Nlog में, आपको टाइमस्टैम्प के साथ एक अच्छा लॉग मिलता है। मुझे अपने मूल्यांकन में यह बहुत उपयोगी लगा।
Log4net में फिल्टर - आप बेहतर इस सवाल की जाँच करें - log4net फ़िल्टर - लॉग संदेशों को अनदेखा करने के लिए कैसे लिखें और फ़िल्टर करें और यदि आपको इसके लिए कोई उत्तर / समाधान मिल जाए, तो कृपया मुझे बताएं। मैं समझता हूं, इस प्रश्न के लिए एक समाधान है, जैसा कि आप अपना स्वयं का कस्टम फ़िल्टर लिख सकते हैं। लेकिन कुछ ऐसा जो log4net में आसानी से उपलब्ध नहीं है।
प्रदर्शन - मैंने एक संग्रहीत कार्यविधि का उपयोग करके डेटाबेस में लगभग 3000 लॉग संदेश लॉग किए। मैंने लूप के लिए सरल का उपयोग किया (int i = 0; i <3000; i ++ ... एक ही संदेश को 3000 बार लॉग करने के लिए। लिखने के लिए: log4net AdoAppender ने NLog की तुलना में लगभग दोगुना समय लिया।
Log4net एसिंक्रोनस ऐपेंडर को सपोर्ट नहीं करता है।
मेरे लिए एनगॉग को लॉगिंग फ्रेमवर्क के रूप में चुनना पर्याप्त था। :)
देर से इस धागे को पाने वाले किसी के लिए, आप .Net बेस क्लास लाइब्रेरी (BCL) पर एक नज़र डालना चाहते हैं। TraceSource क्लास शुरू होने (2005) के बीच कई लोगों ने .Net 1.1 और .Net 2.0 के बीच बदलावों को याद किया ।
TraceSource का उपयोग अन्य लॉगिंग फ्रेमवर्क के लिए विनम्र है, लॉगिंग के दानेदार नियंत्रण के साथ, app.config / web.config में कॉन्फ़िगरेशन, और प्रोग्रामेटिक एक्सेस - एंटरप्राइज़ एप्लिकेशन ब्लॉक के ओवरहेड के बिना।
वहाँ भी तुलना की एक संख्या के आसपास चल रहे हैं: "Log4net बनाम TraceSource"
हमारे लिए, मुख्य अंतर समग्र में है ...
Logger.IsDebugEnabledNLog बनाम Log4Net पर एक नज़र डालें , हमारे परीक्षणों से, NLog में कम ओवरहेड है और यही हम (कम-विलंबता सामान) के बाद हैं।
चीयर्स, फ्लोरियन
पहले अपने स्टैक के बाकी हिस्सों को देखें।
यदि आप NHibernate का उपयोग कर रहे हैं, तो यह सीधे Log4Net का उपयोग करता है। अन्य रूपरेखाओं में अन्य विशिष्ट लॉगर हो सकते हैं जिनकी उन्हें आवश्यकता होती है।
उसके अलावा: दोनों ठीक काम करते हैं।
मैं खुद Log4Net पर बस गया हूं। यह कॉन्फ़िगर करने के लिए एक दर्द हो सकता है, और अगर इसे सही ढंग से कॉन्फ़िगर नहीं किया गया है तो यह पता लगाने के लिए एक दर्द है कि क्या गलत हुआ। लेकिन आप इसे एक लकड़हारे से कुछ भी करवा सकते हैं।
यदि आपके पास Log4Net के साथ कोई स्थायी समस्या नहीं है, तो यहां एक लेख है जो मैंने लिखा है कि इसे कैसे शुरू किया जाए: http://elegantcode.com/2007/12/07/getting-started-with-log4net/
खैर .. मैंने डेटाबेस लॉगिंग कार्यों के लिए एंटरप्राइज लाइब्रेरी का इस्तेमाल किया और अब मैं प्रदर्शन की अड़चन के कारण NLog में बदल गया।
कुछ तुलना जानकारी:
http://pauliusraila.blogspot.com/2010/10/solving-database-logging-bottlenecks.html
मैं उपरोक्त प्रतिध्वनि करता हूं और nLog को प्राथमिकता देता हूं। एंटलीब अनावश्यक रूप से फूला हुआ है।
पुन: Log4net एक चीज जो ALWAYS मुझे Log4net के साथ मिलती है वह घटक को जोड़ने के लिए global.asax में निम्नलिखित जोड़ना भूल रही है:
log4net.Config.XmlConfigurator.Configure();
अगर आप यहां जाएं तो आप एक व्यापक मैट्रिक्स पा सकते हैं जिसमें NLog और Log4Net दोनों लिबास के साथ-साथ एंटरप्राइज लीब और अन्य उत्पाद शामिल हैं।
कोई यह तर्क दे सकता है कि मैट्रिक्स में मौजूद एकमात्र वाणिज्यिक परिवाद की विशेषताओं को रेखांकित करने के लिए मैट्रिक्स को एक तरह से किया जाता है। मुझे लगता है कि यह सच है, लेकिन यह वैसे भी उपयोगी था मेरी पसंद बनाम NLog ड्राइव करने के लिए।
सादर
जैसा कि मैंने देखा, log4net उनके आउटपुट फ़ाइलों को लॉक करता है पूरे समय अनुप्रयोग चल रहा है, इसलिए आप उन्हें हटा नहीं सकते। अन्यथा वे समान हैं।
इसलिए मुझे NLog पसंद है।
एक खुले स्रोत परियोजना के लिए बेशर्म प्लग जो मैं चला रहा हूं, लेकिन जीवंत चर्चा को देखते हुए जिसके बारे में .NET लॉगिंग फ्रेमवर्क अधिक सक्रिय है मैंने सोचा कि मैं सेरिलॉग के लिए एक अनिवार्य लिंक पोस्ट करूंगा ।
किसी एप्लिकेशन के भीतर उपयोग करने के लिए, Serilog log4net के समान है (और भारी खींचता है)। अन्य .NET लॉगिंग विकल्पों के विपरीत, हालांकि, सेरिलॉग ऑफ़लाइन विश्लेषण के लिए लॉग इवेंट की संरचना को संरक्षित करने के बारे में है। जब आप लिखते हैं:
Log.Information("The answer is {Answer}", 42);
अधिकांश लॉगिंग लाइब्रेरी तुरंत संदेश को एक स्ट्रिंग में प्रस्तुत करती हैं। Serilog वह भी कर सकता है, लेकिन यह { Answer: 42 }संपत्ति को संरक्षित करता है ताकि बाद में, कई NoSQL डेटा स्टोर में से एक का उपयोग करके, आप ठीक से मूल्य के आधार पर घटनाओं को क्वेरी कर सकेंAnswer ।
हम 1.0 के करीब हैं और सभी आधुनिक (.NET 4.5, विंडोज स्टोर और विंडोज फोन 8) प्लेटफार्मों का समर्थन करते हैं।
मैं दूसरा NLog भी करता हूं क्योंकि यह अप्रबंधित कोड के साथ भी काम करता है। मुझे लगता है कि यह log4net और log4cxx को एक साथ उपयोग करने के लिए कब्जे में हो सकता है, लेकिन NLog बॉक्स से प्रबंधित और अप्रबंधित कोड दोनों को संभालता है।
मैंने कॉमन.लॉगिंग को भी देखा , एक मुखौटा जो लॉगिंग एपि का अमूर्त बनाता है, यह log4net, NLog और Entreprise लाइब्रेरी का समर्थन करता है। मुझे नहीं लगता कि मैं इसका उपयोग करूंगा, लेकिन मुझे पसंद है कि लॉगिंग अक्षम होने पर प्रदर्शन में सुधार करने के लिए वे लैम्ब्डा का उपयोग कैसे करते हैं (एनएलओजी और शायद दूसरों के साथ साझा की गई सुविधा)।
आप Microsoft एंटरप्राइज़ लाइब्रेरी लॉगिंग ब्लॉक पर भी विचार कर सकते हैं । यह अच्छा डिजाइनर के साथ आता है।
मेरे अनुभव के आधार पर, SmartInspect NLog और log4net दोनों को हराता है।
इसका उपयोग करना बेहद आसान है, प्रलेखन बहुत अच्छा है, और आप पहले से लॉग किए गए संदेशों को देख और फ़िल्टर कर सकते हैं को उनके इंटरैक्टिव लॉग दर्शक के साथ , जो कि एक बहुत बड़ा वास्तविक लाभ है।
एक चीज़ जो मुझे पसंद है वह है क्रोम में ब्राउज़र टैब की तरह, डेटा के टैब्ड विचार। प्रत्येक टैब लॉग का एक अलग फ़िल्टर किया गया दृश्य प्रदान कर सकता है।