जब चुस्त सॉफ्टवेयर विकास और सभी सिद्धांतों (एसआरपी, ओसीपी, ...) के बारे में सोच रहा हूं तो मैं खुद से पूछता हूं कि लॉगिंग का इलाज कैसे करें।
क्या एक एसआरपी उल्लंघन के कार्यान्वयन के बगल में लॉगिंग है?
मैं कहूंगा yes
क्योंकि क्रियान्वयन भी बिना लाग-लपेट के चलने में सक्षम होना चाहिए। तो मैं बेहतर तरीके से लॉगिंग कैसे लागू कर सकता हूं? मैंने कुछ पैटर्न की जाँच की है और एक निष्कर्ष पर आया है कि उपयोगकर्ता-परिभाषित तरीके से सिद्धांतों का उल्लंघन नहीं करने का सबसे अच्छा तरीका है, लेकिन किसी भी पैटर्न का उपयोग करने के लिए जो सिद्धांत का उल्लंघन करने के लिए जाना जाता है, एक डेकोरेटर पैटर्न का उपयोग करना है।
मान लीजिए कि हमारे पास एसआरपी उल्लंघन के बिना पूरी तरह से घटकों का एक गुच्छा है और फिर हम लॉगिंग जोड़ना चाहते हैं।
- घटक ए
- घटक B A का उपयोग करता है
हम ए के लिए लॉगिंग करना चाहते हैं, इसलिए हम एक अन्य घटक डी बनाते हैं, जिसे ए I दोनों को लागू करने के साथ सजाया गया है।
- इंटरफ़ेस मैं
- घटक L (सिस्टम का लॉगिंग घटक)
- घटक एक उपकरण I
- घटक डी लागू करता है I, सजाता है / ए का उपयोग करता है, लॉगिंग के लिए एल का उपयोग करता है
- घटक B एक I का उपयोग करता है
लाभ: - मैं बिना लॉग-इन के ए का उपयोग कर सकता हूं - ए का परीक्षण करने का मतलब है कि मुझे किसी लॉगिंग मोक्स की आवश्यकता नहीं है - परीक्षण सरल हैं
नुकसान: - अधिक घटक और अधिक परीक्षण
मुझे पता है कि यह एक और खुला चर्चा प्रश्न लगता है, लेकिन मैं वास्तव में जानना चाहता हूं कि क्या कोई डेकोरेटर या एसआरपी उल्लंघन की तुलना में बेहतर लॉगिंग रणनीतियों का उपयोग करता है। स्टैटिक सिंगलटन लॉगर के बारे में क्या है जो डिफॉल्ट NullLogger के समान है और यदि syslog- लॉगिंग चाहता है, तो कोई रनटाइम पर कार्यान्वयन ऑब्जेक्ट को बदल देता है?