मैं कुछ लॉगिंग निर्भरताओं को हटाने की कोशिश कर रहा हूं और कैसल विंडसर की लॉगिंग सुविधा में ठोकर खा रहा हूं। हालांकि, मुझे इस बारे में संदेह है कि मुझे इसका उपयोग करना चाहिए या नहीं।कैसल विंडसर लॉगिंग सुविधा
public class MyClass
{
public Castle.Core.Logging.ILogger Logger { get; set; }
...
}
विंडसर की लॉगिंग सुविधा की आवश्यकता है कि आप अपने लॉगर को संपत्ति के रूप में बेनकाब करें। क्या यह वाकई एक अच्छा अभ्यास है? मुझे लगता है कि मैं लगभग encapsulation तोड़ रहा हूँ क्योंकि आम तौर पर जब मैं एक घटक का पुन: उपयोग करता हूं, मुझे इसकी लॉगिंग तंत्र की परवाह नहीं है और मैं आमतौर पर इसे उजागर नहीं करना चाहता हूं।
यदि मैं एक कस्टम रैपर का उपयोग करता हूं जो लॉग बनाने के लिए स्थिर वर्ग का उपयोग करता है, तो मैं इसे निजी रख सकता हूं। उदाहरण के लिए:
public class MyClass
{
private static MyCustomWrapper.ILogger Logger = LogManager.GetLogger(typeof(MyClass));
...
}
मैं कारण मैं लॉगिंग सुविधा का उपयोग करना चाहिए के लिए वेब खोज की है, लेकिन मैं केवल कैसे इसका इस्तेमाल करने पर लेख खोजने हूँ, लेकिन नहीं क्यों मुझे इसका इस्तेमाल करना चाहिए। मुझे लगता है कि मैं बिंदु खो रहा हूँ। लॉगिंग घटक को उजागर करना मुझे डरावना करने का प्रकार है।
लेकिन क्या मैं पहले से ही 'Castle.Core.Logging.ILogger' के साथ नहीं जोड़ा जाएगा? या ऐसा इसलिए है क्योंकि 'LogManager' एक स्थिर वर्ग है और मैं इसे प्रतिस्थापित नहीं कर सकता? – Books
@ एशले: बिल्कुल। एक इंटरफ़ेस के साथ बहुत कम युग्मन है। –