2010-01-29 13 views
5

सरल प्रश्न: शीर्षक देखें। मैं .NET 3.5 का उपयोग कर रहा हूँ।क्या .NET में अंतर्निहित लॉगिंग फ्रेमवर्क है?

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

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

जो मुझे केवल मेरे अंतर्निहित .NET असेंबली और मेरे प्लगइन असेंबली में सबकुछ छोड़ देता है। हालांकि, मैं खुद को एक और लॉगिंग फ्रेमवर्क बनाकर पहिया को फिर से शुरू नहीं करना चाहता हूं, इसलिए मैं जानना चाहता हूं कि इस समस्या का सबसे अच्छा तरीका क्या होगा।

मैं एक फ़ाइल में लॉगिंग करना पसंद करूंगा और विंडोज इवेंट लॉग में डंपिंग सामग्री से बचना चाहता हूं।

+0

"यह रूट लॉगर का पर्दाफाश नहीं करता है" - क्या आप सिर्फ log4net.dll का संदर्भ नहीं जोड़ सकते हैं और सीधे रूट लॉगर तक पहुंच सकते हैं? – Joe

+1

मैंने अपना खुद का रूट लॉगर बनाने और माता-पिता के अनुप्रयोगों का उपयोग करने का प्रयास करने का प्रयास नहीं किया है। Log4net केवल प्रति एप्लिकेशन एक रूट लॉगर की अनुमति देता है और मूल एप्लिकेशन पहले से ही एक बना रहा है। अगर उनका कहीं खुलासा हुआ तो मैं इसका उपयोग कर पाऊंगा, लेकिन ऐसा नहीं है। मुझे यकीन नहीं है कि यह प्रति ऐप या प्रति ऐपडोमेन में एक रूट लॉगर है।यदि यह प्रति ऐपडोमेन में से एक है और मैं अपनी प्लगइन से अपना ऐपडोमेन बनाने का प्रयास कर सकता हूं और फिर अपना रूट लॉगर बना सकता हूं। – alimbada

उत्तर

10

दो मुख्य विकल्प वहाँ बाहर हैं:

Trace और Debug वर्ग है जो नेट फ्रेमवर्क (System.Diagnostics नाम स्थान के अंदर) का हिस्सा हैं शायद आपका सर्वश्रेष्ठ दांव हैं। ये विभिन्न रनटाइम कॉन्फ़िगर करने योग्य श्रोताओं को हल्के लॉगिंग करने के लिए टूल प्रदान करते हैं, जो फ़ाइल, इवेंट लॉग और कई अन्य स्थानों पर लिख सकते हैं।

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

+0

मैं मूल रूप से एंटरप्राइज़ लाइब्रेरी के बारे में सोच रहा था, लेकिन मेरे संदेह की पुष्टि करने के बाद कि यह एक बाहरी पुस्तकालय था, मैंने विचार की उस ट्रेन का पीछा करना बंद कर दिया। मैं अब के लिए ट्रेस और डीबग का प्रयास करूंगा। चीयर्स। :) – alimbada

-1

+1। आप अपस्ट्रीम डेवलपर्स से ट्रेस लिस्टनर को लागू करने के लिए कह सकते हैं जो आपके संदेशों को Log4Net में आगे बढ़ाता है ताकि सब कुछ एक ही फाइल में समाप्त हो जाए।

वे लॉग 4नेट डेटा देखने और विश्लेषण के लिए Gibraltar पर भी विचार कर सकते हैं। वास्तव में, अगर अपस्ट्रीम डेवलपर्स जिब्राल्टर एकीकृत करते हैं तो यह स्वचालित रूप से लॉग 4नेट और ट्रेस डेटा को मर्ज करेगा।

अद्यतन: हमने अपना लॉग व्यूअर मुफ़्त बनाया है!

क्यों our best log viewer is now FREE

या learn more लिए हमारी वेबसाइट पर जाएँ या बस get the bits now!

2

आप Common.Logging infrastructure पर एक नज़र ले सकता है के बारे में अधिक के लिए हमारा ब्लॉग पढ़ें। यह log4net और LAB जैसे लॉगिंग फ्रेमवर्क के आसपास एक मुखौटा है।

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