2009-01-20 7 views
23

मैं प्रवेश के बारे में कुछ सवाल हैं, और अधिक विशेष यह स्थापित करने और यकीन है कि यह काम करता है बनाने के बारे में।SL4J का उपयोग कर लॉगिंग, जकार्ता कॉमन्स प्रवेश करने, तीसरे पक्ष के पुस्तकालयों के लिए log4j और अपने खुद के कोड

मैं जो परियोजना कर रहा हूं वह Wicket, Spring और Hibernate का उपयोग करेगा। मुझे पता है कि विकेट और हाइबरनेट जावा के लिए सरल लॉगिंग फेकाडे का उपयोग करता है (SL4J) और यह कि स्प्रिंग logging component from Apache Commons का उपयोग कर रहा है।

क्या वे खुशी से सह-अस्तित्व में रहेंगे? मैंने सोचा कि मैं log4j का उपयोग एसएल 4 जे और अपाचे कॉमन्स से लॉगिंग घटक दोनों के साथ करूँगा, क्या आपको लगता है कि यह एक अच्छा विचार है?

मैं एक आम फ़ाइल में उत्पादन लॉगिंग डेटा के लिए उन्हें पूरी तरह तैयार कर सकते हैं? या मुझे अलग फाइलों का उपयोग करना चाहिए? या मुझे लॉगिंग संदेशों को डेटाबेस में संग्रहीत करना चाहिए? (मैं नहीं चाहता, क्योंकि मुझे टेक्स्ट फ़ाइलों पर बहुत ही सुविधाजनक लगता है।)

वसंत के लिए मुझे लगता है कि मुझे अपाचे कॉमन्स लॉगिंग घटक के लिए कुछ प्रकार की कॉन्फ़िगरेशन फ़ाइल चाहिए, साथ ही मैं इसे log4j का उपयोग करने के लिए निर्देशित करता हूं?

जब मैंने इसे सेट अप किया है तो मुझे लगता है कि सब कुछ काम करता है, मैंने लॉगिंग स्तर को INFO में सेट किया है क्योंकि यह काफी निश्चित है कि सभी तीन ढांचे उस मोड में कुछ जानकारी आउटपुट करते हैं? या यह सुनिश्चित करने के लिए एक बेहतर तरीका है?

और मेरा अंतिम प्रश्न। प्रोजेक्ट में मैं शुरू कर रहा हूं, क्या आप अनुशंसा करते हैं कि मैं अपने स्वयं के लॉगिंग उद्देश्यों के लिए SL4J का उपयोग करूं? (मैंने सोचा कि मैं सीधे लॉग 4j का उपयोग करूंगा, लेकिन इससे पहले कि मैंने लॉगिंग के बारे में थोड़ा और सीखा और इससे पहले कि कई सम्मानित पुस्तकालय अपनी लॉगिंग आवश्यकताओं के लिए पुल/मुखौटा का मार्ग चुनते हैं। और अगर यह हमें बिना लचीलापन देता है लागत वहाँ इसे उस तरह से नहीं करने के लिए कोई कारण नहीं है।)

मैं कैसे आप अपने प्रवेश कर रहे हैं के बारे में आप से अधिक सुनने के लिए उत्सुक हूं। यह मेरे लिए एक नया क्षेत्र है जो मैं अपने आप में सुधार करने के लिए उत्सुक हूँ।

उत्तर

20

खैर SLF4J, बस एक मुखौटा है कॉमन्स लॉगिंग, जिसका अर्थ है वे अभी भी काम करने के लिए कुछ और की जरूरत है की तरह। वे लाइब्रेरी लेखकों को उपयोगकर्ताओं को एकाधिक लॉगिंग लाइब्रेरी और कॉन्फ़िगरेशन करने के लिए मजबूर नहीं करने की अनुमति देते हैं। Log4j और लॉगबैक नियमित रूप से लॉगिंग libs हैं।

अधिक जानकारी के लिए here देखें।

SLF4J एक commons logging bridge कि आप कॉमन्स पुस्तकालय प्रवेश करने को बदलने के लिए उपयोग कर सकते हैं। मुझे लगता है कि स्कीमा स्थिति को अच्छी तरह से समझाती है।

अब, आपको सिर्फ slf4j-logj12.jar का उपयोग करने के लिए कॉमन्स लॉगिंग और slf4j का उपयोग लॉग 4j (या आपके द्वारा चुने गए किसी और चीज का उपयोग करने की आवश्यकता है; बीटीडब्लू, लॉगबैक को एक अतिरिक्त लाइब्रेरी की आवश्यकता नहीं है जिसका उपयोग slf4j के साथ किया जाना चाहिए) इंजन।

आप आवेदन इस प्रकार

  • jcl104-ओवर-slf4j.jar होगा (slf4j उपयोग करने के लिए हाइबरनेट के लिए और अन्य)
  • slf4j
  • slf4j.jar (slf4j को प्रवेश करने जकार्ता कॉमन्स पाटने के) -logj12.jar (slf4j के लिए बैकएंड के रूप में log4j का उपयोग करने के लिए)
  • log4j.jar (आपके आवेदन के उपयोग के लिए।सभी config भी यहां किया जाएगा)
+2

xxxx-ओवर-slf4j.jar साथ भ्रमित नहीं करने के लिए slf4j-xxxx.jar याद रखें। पूर्व आपके वांछित लॉगिंग ढांचे (log4j, logback, आदि) के लिए फनलिंग के लिए है, बाद में उपयोग किए गए लॉगिंग ढांचे को प्रतिस्थापित करना है। –

+1

और दोनों का उपयोग स्पेस-टाइम कपड़े में उल्लंघन कर सकता है! – Loki

+14

पागलपन बंद करो। क्या कोई और सोचता है कि लॉगिंग बहुत जटिल हो गई है? मैंने सोचा कि log4j एक भयानक चीज थी, जो मानक बनने योग्य है। मैंने यह जानने के लिए पर्याप्त रूप से जेसीपी इतिहास का पालन नहीं किया कि क्यों सूर्य ने अपना रास्ता तय करने का फैसला किया। यह मज़ाकीय है। मैं एसीएल + log4j का उपयोग करें। – duffymo

13

यहाँ SLF4J के लिए सब कुछ रीडायरेक्ट करने के लिए कैसे:

  • अपने classpath से commons-logging.jar को हटा दें। यदि आप मेवेन का उपयोग कर रहे हैं और कॉमन्स-लॉगिंग से छुटकारा पाने में परेशानी है, तो this देखें।

  • अपने क्लासपाथ में jcl-over-slf4j.jar डालें (यह एसएलएफ 4 जे वितरण में आता है)। यह एक ड्रॉप-इन प्रतिस्थापन है जो जेसीएल के वर्गों की नकल करता है, लेकिन आंतरिक रूप से एसएलएफ 4 जे को कॉल करता है। यह वसंत का ख्याल रखेगा, और जेसीएल का उपयोग करने वाले किसी भी अन्य ढांचे का ख्याल रखेगा।

अपने पसंदीदा बैकएंड (Log4J, Logback ...) classpath में slf4j-xxx.jar डालकर से कनेक्ट SLF4J। सभी श्रेणियों को एक फ़ाइल में लॉग इन करने के लिए बैकएंड कॉन्फ़िगर करें, और आप कर चुके हैं।

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

पुनश्च: वैसे, JCL = जकार्ता कॉमन्स लॉगिंग

+0

धन्यवाद! मैं ओपी में जेसीएल में बदल गया। –

+0

"बैकएंड को सभी श्रेणियों को एक फ़ाइल में लॉग इन करने के लिए बैकएंड" पर क्या मतलब है? क्या आप अधिक जानकारी प्रदान कर सकते हैं? – Glenn

+1

मैक्रॉन में अपने अंतिम निर्माण से कॉमन्स-लॉगिंग को बाहर करने के लिए 99.0 के बजाय 'प्रदान' का उपयोग करें- एरिक से मौजूद नहीं है। –

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