मैं अक्सर अपने कोड में शामिल लॉगिंग की मात्रा से निराश हूं और इससे मुझे आश्चर्य होता है कि चीजों को करने का बेहतर तरीका है या नहीं।क्या .NET में निष्क्रिय लॉगिंग संभव है?
मुझे नहीं पता कि यह किया गया है या कोई व्यक्ति बेहतर विचार के साथ आया है, लेकिन मैं सोच रहा था कि किसी को किसी एप्लिकेशन में लॉगर को "इंजेक्ट" करने के बारे में पता है, तो यह निष्क्रिय रूप से मॉनीटर करता है थ्रेड और चुपचाप प्रक्रियाओं लॉग जैसी चीज़ों के लिए बिना के रूप में वे होते हैं:
public void MyProcess(int a, string b, object c)
{
log(
String.Format(
"Entering process MyProcess with arguments: [a] = [{0}]; [b] = [{1}]; [c] = [{2}]",
a.ToString(),
b,
c.ToString()
);
try
{
int d = DoStuff(a)
log(
String.Format(
"DoStuff({0}) returned value {1}",
a.ToString(),
d.ToString()
)
);
}
catch (Exception ex)
{
log(
String.Format("An exception occurred during process DoStuff({0})\nException:\n{1}",
a.ToString(),
ex.ToString())
)
}
}
अगर मैं अपने लकड़हारा करने के लिए कह सकते हैं क्या बहुत अच्छा होगा है:
Monitor(MyClass.MyMethod)
यह तो सब कुछ है कि पर चला जाता है की निगरानी करती है वाई के साथ तर्क में पारित सहित उस विधि के अंदर वें विधि कॉल और मूल्य उन विधियों में पारित किए गए हैं, अपवाद जो इत्यादि हैं।
क्या किसी ने अतीत में ऐसा कुछ लागू किया है? क्या यह लागू किया जा सकता है? इस फैशन में सिर्फ एक पाइप सपना लॉगिंग कर रहा है?
मुझे कुछ ऐसा करने के लिए अच्छा लगेगा जो ऐसा करेगा, लेकिन मुझे यह भी नहीं पता कि मैं कहां से शुरू करूंगा। बेशक, मैं पहिया को फिर से शुरू नहीं करना चाहता, अगर यह पहले से ही किया जा चुका है, तो यह अच्छा होगा अगर कोई मुझे सही दिशा में इंगित कर सके।
कोई सुझाव कृतज्ञता प्राप्त की जाएगी ...
संपादित करें: मैंने सोचा कि मैं एक जवाब जो लॉग में आवश्यक विस्तार के स्तर के रूप में पूछे पर टिप्पणी चाहते हैं। अक्सर यह आवश्यक होता है कि लॉगिंग के कॉन्फ़िगर करने योग्य स्तर प्रदान किए जाएंगे जैसे कि कॉन्फ़िगरेशन विस्तृत लॉगिंग निर्दिष्ट करता है तो सबकुछ लॉग होता है, जबकि यदि महत्वपूर्ण लॉगिंग कॉन्फ़िगर की जाती है तो अपवादों के साथ ही कुछ जानकारी लॉग होती है। यदि घातक लॉगिंग कॉन्फ़िगर किया गया है तो केवल जानकारी जो एप्लिकेशन को मरने का कारण बनती है, लॉग हो जाएगी। क्या ऐसा कुछ कॉन्फ़िगर करने योग्य होगा या क्या एओपी को लॉगिंग स्तरों की संख्या के आधार पर 3 या 4 अलग-अलग बिल्डों की आवश्यकता होगी?
मैं अक्सर 4 स्तरों का उपयोग: घातक, गंभीर, सूचना, विस्तृत
यह रन-टाइम पर कॉन्फ़िगर करने योग्य हो सकता है लेकिन फिर रन-टाइम के दौरान चलने वाला लॉगर अभी भी सभी जानकारी प्राप्त करेगा और फिर यह तय करना होगा कि लॉग इन करना है। यदि आप नहीं चाहते हैं कि सभी जानकारी को लॉगर में पास किया जा रहा है, तो एकमात्र तरीका अलग-अलग निर्माण करना होगा। –