मैं किस नई इंटरफ़ेस को अपनी नई कक्षाओं में प्रोग्राम करता हूं? loag4j या slf4j?
यदि आप SLF4J का उपयोग करने जा रहे हैं, तो उस इंटरफ़ेस पर प्रोग्राम। यह अंतर्निहित लॉगिंग कार्यान्वयन के लिए सबसे लचीलापन प्रदान करता है। Slf4j का बिंदु एक इंटरफ़ेस होना है जिसे आप प्रोग्राम कर सकते हैं, इसलिए भविष्य में यदि आप स्विच करने का निर्णय लेते हैं, तो लॉग इन करें, आपको अपना कोड फिर से लिखना नहीं होगा।
जारों को तैनात करने का पसंदीदा तरीका क्या है? उन्हें अपने आवेदन युद्ध में डाल दें या क्या मैं उन्हें टॉमकैट libs में डालूं?
उन्हें अपने युद्ध में रखें।
टॉमकैट libs निर्देशिका में JAR को रखने का एकमात्र कारण (आईएमओ) है यदि उन्हें मूल पुस्तकालय लोड करने की आवश्यकता है। चूंकि जावा आपको दो अलग-अलग क्लासलोडरों से एक ही मूल पुस्तकालय लोड करने की अनुमति नहीं देगा, इसलिए आपको एक सामान्य स्थान पर रखना होगा। लेकिन यह यहां लागू नहीं होता है।
कुछ लोग अंतरिक्ष बचाने के तरीके के रूप में lib निर्देशिका के बारे में सोचते हैं।यह तब मान्य हो सकता है जब "सर्वर-क्लास" मशीनों में 1 जीबी रैम था, लेकिन यह अब और नहीं है। और lib
से बचने का मतलब है कि आप हार्ड-टू-डीबग क्लासलोडिंग समस्याओं से बचते हैं।
मुझे किन जारों को तैनात करने की आवश्यकता है?
- slf4j-api बुनियादी एपीआई है
- slf4j-log4j12 मार्गों
- JCL-ओवर-slf4j अवरोध कॉमन्स लॉगिंग और मार्गों यह SLF4J के माध्यम से (Log4J करने के लिए)
- Log4J करने के लिए वास्तविक लॉगिंग log4j आपका भौतिक लॉगिंग फ्रेमवर्क होगा
मुझे लगता है कि आपके पास पहले से ही लॉग 4 जे के लिए कॉन्फ़िगरेशन है और/या कॉन्फ़िगरेशन लिखने में सहज हैं। यदि नहीं, और आप जिस पर ध्यान रखते हैं वह कोड से निपट रहा है जो आंतरिक रूप से Log4J का उपयोग करता है, तो log4j-over-slf4j
है, जो Log4J कॉल को रोक देगा। फिर आपको लॉगबैक जैसे ढांचे को चुनने की ज़रूरत है।
(ध्यान दें:। मैं मूल रूप से इन पैकेजों के सभी के लिए लिंक जोड़ा है, लेकिन उन्हें पोस्ट करने के लिए पर्याप्त प्रतिनिधि नहीं है तो here's SLF4J संकुल के सभी के साथ Maven भंडार करने के लिए एक कड़ी हाइलाइट किया गया)
1. ठीक 2. जैसा कि मैं समझता हूं कि अगर मैं अपने युद्ध में सभी जार डालता हूं तो मुझे नुकसान होता है कि मेरे पास युद्ध के बाहर लॉगिंग कॉन्फ़िगरेशन नहीं हो सकता है और (ऑटो-अपडेट के साथ) रनटाइम पर कॉन्फ़िगरेशन में हेरफेर कर सकता है। (यह एक tomcat/log4j_2.0 प्रश्न हो सकता है और मुझे इसे एक अलग पोस्ट में पूछना चाहिए) 3. जैसा कि मैं log4j * 2.0 * का उपयोग करने की योजना बना रहा हूं, मुझे लगता है कि मुझे sl44-sl44-impl4jar की बजाय log4j-slf4j-impl.jar की आवश्यकता है .jar, क्या यह सही है? – raudi
लॉग 4j 2.0 का उपयोग नहीं किया है, इसलिए यह सुनिश्चित न करें कि आपको कौन सा कार्यान्वयन JAR की आवश्यकता होगी। लेकिन यह एसएलएफ 4 जे साइट पर उपलब्ध होना चाहिए। – parsifal
अपनी कॉन्फ़िगरेशन को बाहरी रखने के लिए, ताकि आप इसे फ्लाई पर संशोधित कर सकें: आप अभी भी यह कर सकते हैं, lib निर्देशिका में * बस * कॉन्फ़िगरेशन फ़ाइल डालें (और WAR में कुछ भी नहीं)। यह युद्ध के भीतर से एक क्लासपाथ स्कैन द्वारा पाया जाएगा। हालांकि, मैं लॉगिंग स्तर समायोजित करने के लिए जेएमएक्स का उपयोग करना पसंद करता हूं। Log4J 1.2 में एक जेएमएक्स बीन है, और मैं 2.0 में भी अपेक्षा करता हूं; यदि आप इसे तुरंत चालू करते हैं, तो यह प्लेटफ़ॉर्म जेएमएक्स प्रदाता के साथ स्वयं पंजीकृत करता है, ताकि आप इसे एक्सेस करने के लिए जेकोनसोल जैसे टूल का उपयोग कर सकें। – parsifal