2012-08-29 10 views
6

मेरे पास एक बिल्ड ए है जिसमें log4j.jar इसके निर्माण पथ पर है।मैं जार के लिए log4j लॉगिंग कैसे कॉन्फ़िगर कर सकता हूं?

Logger _log = Logger.getLogger(A.<>.class); 
... 
_log.info("..."); 

मैं एक अन्य परियोजना बी परियोजना बी लिए पहले से कोई log4j जार और उसके अपने .xml विन्यास फाइल है में एक जार के रूप में परियोजना निर्यात कर रहा हूँ: मैं है कि के रूप में प्रवेश बयान वर्गों की एक संख्या है । मैं अलग-अलग वर्गों को कंसोल अपेंडर पर लॉग इन करने के लिए अलग-अलग "स्तर" पर कॉन्फ़िगर करना चाहता हूं। मैं यह कैसे कर सकता हूं, कृपया?

उत्तर

1

अच्छा, मूल रूप से, आपको ऐसा नहीं करना चाहिए। इस बारे में सोचें: यदि ऐसा किया जाएगा, तो प्रत्येक लाइब्रेरी जो कि किसी भी एप्लिकेशन में शामिल है, अपनी लॉगिंग कॉन्फ़िगरेशन होस्ट करेगी, जो एप्लिकेशन में मौजूद किसी भी संभावित रूप से ओवरराइडिंग कर सकती है, और एक दूसरे को, निर्दिष्ट आदेश में । आप वह नहीं चाहते हैं। तो मत।

[यदि आप वास्तव में, वास्तव में ऐसा करना चाहते हैं, तो आपके पास जार में गुण फ़ाइल हो सकती है जिसे मुख्य एप्लिकेशन में किसी XML फ़ाइल द्वारा ओवरराइड किया जा सकता है। विवरण देखें here। लेकिन मत करो। :)]

1

सामान्य रूप से, आप नहीं करते हैं। आम तौर पर, आप एक log4j कॉन्फ़िगरेशन फ़ाइल चाहते हैं। लेकिन मुझे लगता है कि आप the log4j documentation

1

में वर्णित अनुसार अपने कॉन्फ़िगरेशन को स्पष्ट रूप से लोड कर सकते हैं, log4j.jar का संस्करण चुनें, शायद नया। आप केवल एक संस्करण का उपयोग कर सकते हैं। आपको प्रोजेक्ट ए और प्रोजेक्ट बी की लॉगिंग कॉन्फ़िगरेशन को मर्ज करने की आवश्यकता है। आप रनटाइम पर log4j कक्षाओं में ऐसा कर सकते हैं, लेकिन नहीं। बस बुलेट काटने और स्रोत नियंत्रण में उन्हें एक बार मर्ज करें।

+0

मैं देखता हूं। फिर com.A.something के लिए लॉगर जोड़ना बी की कॉन्फ़िगरेशन फ़ाइल में ठीक काम करेगा, भले ही ए को जार में पैक किया गया हो? – mvd

+0

हां। लेकिन आपको लॉगिंग कॉन्फ़िगरेशन का इलाज बी के रूप में नहीं करना चाहिए। यह पूरे ऐप से संबंधित है। बी के अंदर कॉन्फ़िगरेशन के बारे में सोचें क्योंकि ओवरराइड या पूरी तरह से प्रतिस्थापित करने के लिए डिफ़ॉल्ट हैं। कक्षाओं में कौन सी जार है, लागू होने वाली लॉगिंग कॉन्फ़िगरेशन की कोई प्रासंगिकता नहीं है। वे सिर्फ एक साथ पैक किया जाता है। Log4j क्लासपाथ से जावा कॉन्फ़िगरेशन फ़ाइल पढ़ सकता है और जावा क्लासपाथ पर कक्षाएं पाता है। एक ही जार में दोनों को रखना सिर्फ सुविधाजनक है। –

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