2011-12-13 17 views
8

क्या कोई मुझे कृपया बता सकता है log4j और apache.commons.logging के बीच संबंध क्या है? कौन सा अधिक लोकप्रिय और बेहतर है?log4j और apache.commons.logging के बीच संबंध

मैं एक मौजूदा आवेदन जिसमें वे import org.apache.commons.logging.LogFactory; आयातित और Log नामक एक अलग वर्ग से लिखा और critical, warn के रूप में तरीकों के कुछ अधिरोहित है, info

उदाहरण

public static void info(String caller, String toWrite) 
    { 
     write(caller,toWrite,Log.INFO); 
    } 
सका

किसी के लिए आयात किया है कृपया मुझे बताएं कि log4j है और apache.commons.logging अलग हैं ??

उत्तर

11

अपाचे कॉमन्स लॉगिंग कंक्रीट कार्यान्वयन के लिए एक अमूर्त है। यह लॉग 4j का उपयोग करता है, अगर वर्तमान और कॉन्फ़िगर किया गया है। मैं लॉगिंग कार्यान्वयन के रूप में अपने कोड और log4j में कॉमन्स लॉगिंग का उपयोग करूंगा।

+0

मैं कॉमन्स मेरी कोड और लॉगिंग कार्यान्वयन के रूप में log4j में प्रवेश करने का प्रयोग करेंगे, तो क्यों अपाचे कॉमन्स उपयोग करने के लिए लॉग इन करना ?? – Pawan

+0

आप रनटाइम पर एक अलग या कोई कार्यान्वयन का उपयोग कर सकते हैं, इसलिए आपका प्रोग्राम अधिक लचीला है। –

+0

बहुत बहुत धन्यवाद। – Pawan

2

log4j एक लॉगिंग फ्रेमवर्क है, यानी यह संदेश लॉग करने के लिए कोड प्रदान करता है। कॉमन्स-लॉगिंग लॉगिंग फ्रेमवर्क के लिए एक अमूर्त परत है, यह कुछ भी लॉग नहीं करता है। उदाहरण के लिए यदि मैं कॉमन्स लॉगिंग का उपयोग करके कोड लिखता हूं और इसे जेबॉस पर तैनात करता हूं, तो लॉगिंग लॉग 4j द्वारा की जाती है, लेकिन अगर मैं इसे वेबस्फेयर लॉगिंग पर तैनात करता हूं तो वेबस्पेयर के अपने लॉगिंग कार्यान्वयन द्वारा किया जाता है। अगर मैं एक अकेले खड़े आवेदन यह जावा के अपने प्रवेश कर रहा है कि इस्तेमाल किया

0

प्रति कॉमन्स-प्रवेश के जावा-डॉक प्रलेखन के रूप में के रूप में एक ही कोड चलाने

LogFactory की कंक्रीट उपवर्ग कि निम्नलिखित कलन विधि को लागू करता है गतिशील रूप से एक को चुनने के लिए प्रवेश कार्यान्वयन वर्ग के लिए एक आवरण का दृष्टांत के लिए:

  • अनुरोध किया कार्यान्वयन वर्ग की पहचान के लिए एक कारखाने विन्यास विशेषता org.apache.commons.logging.Log नामित का प्रयोग करें।
  • अनुरोध की कार्यान्वयन कक्षा की पहचान करने के लिए org.apache.commons.logging.Log सिस्टम प्रॉपर्टी का उपयोग करें।
  • यदि लॉग 4 जे उपलब्ध है, तो org.apache.commons.logging.impl.Log4JLogger का एक उदाहरण लौटाएं।
  • यदि जेडीके 1.4 या बाद में उपलब्ध है, तो org.apache.commons.logging.impl.Jdk14Logger का एक उदाहरण लौटाएं।
  • अन्यथा, एक उदाहरण की org.apache.commons.logging.impl.SimpleLog

इसलिए लौट अनुमान है:

  • कॉमन्स-लॉगिंग अमूर्त की अधिक है। यह LOG4J के बिना भी रह सकता है।
  • यदि लॉग 4j मौजूद है, तो यह इसे चुनता है। अन्यथा अन्य डिफ़ॉल्ट उपलब्ध है।
  • LOG4J लोकप्रिय है क्योंकि यह फ़ाइल में आसान रीडायरेक्ट आउटपुट है, और लॉग स्तर को कॉन्फ़िगर करने के लिए लचीलापन है।

JavaDoc यूआरएल: https://commons.apache.org/proper/commons-logging/javadocs/api-1.1.3/index.html

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