2010-11-23 15 views
13

मेरा जावा एप्लिकेशन एक तृतीय-पक्ष जार फ़ाइल का संदर्भ देता है जो log4j लॉगिंग का उपयोग करता है। समस्या यह है कि इस जार में अपनी खुद की log4j.properties फ़ाइल है जो मेरी मशीन पर एक्सेस अपवादों का कारण बनती है, लेकिन मेरे पास सामग्री को बदलने के लिए जार फ़ाइल पर नियंत्रण नहीं है।log4j.properties ओवरराइड

मैंने अपने आवेदन के क्लासपाथ में अपनी खुद की log4j.properties फ़ाइल जोड़ने का प्रयास किया है, लेकिन ऐसा कोई प्रतीत नहीं होता है। यदि मैं अपनी खुद की सेटिंग्स प्रोग्रामेटिक रूप से आयात करने के लिए PropertyConfigurator का उपयोग करने का प्रयास करता हूं, तो log4j पहले जार फ़ाइल की गुण फ़ाइल लोड करता है (अपवाद उत्पन्न करता है)।

मैं तृतीय-पक्ष जार फ़ाइल की log4j.properties फ़ाइल को अनदेखा करने के लिए लॉग -4 कैसे शॉर्ट-सर्किट कर सकता हूं और अपना स्वयं का उपयोग कर सकता हूं?

उत्तर

15

कई तरह से log4j.properties ओवरराइड करने के लिए कर रहे हैं, उनमें से एक है:

  • log4j.xml उपयोग कृपया विस्तार
देख

एक और दृष्टिकोण है:

  • को सेट करना log4j.defaultInitOverride सिस्टम प्रॉपर्टी किसी भी अन्य मूल्यपर सेट करनाफिर "झूठा" लॉग 4j को डिफ़ॉल्ट प्रारंभिक प्रक्रिया (इस प्रक्रिया) को छोड़ने का कारण बन जाएगा।
  • संसाधन स्ट्रिंग चर को log4j.configuration सिस्टम प्रॉपर्टी के मान पर सेट करें। डिफ़ॉल्ट प्रारंभिक फ़ाइल निर्दिष्ट करने का पसंदीदा तरीका log4j.configuration सिस्टम प्रॉपर्टी के माध्यम से है। यदि सिस्टम प्रॉपर्टी log4j.configuration परिभाषित नहीं है, तो स्ट्रिंग वेरिएबल संसाधन को इसके डिफ़ॉल्ट मान "log4j.properties" पर सेट करें।
  • संसाधन चर को एक यूआरएल में परिवर्तित करने का प्रयास करें।
  • यदि संसाधन चर को किसी URL में परिवर्तित नहीं किया जा सकता है, उदाहरण के लिए MalformedURLException के कारण, तो classgath से संसाधन को org.apache.log4j.helpers.Loader.getResource (संसाधन, Logger.class) पर कॉल करके खोजें। एक यूआरएल देता है। ध्यान दें कि स्ट्रिंग "log4j.properties" एक विकृत यूआरएल का गठन करती है। खोजे गए स्थानों की सूची के लिए Loader.getResource (java.lang.String) देखें।
  • यदि कोई यूआरएल नहीं मिला, तो डिफ़ॉल्ट प्रारंभिकरण रद्द करें। अन्यथा, यूआरएल से log4j कॉन्फ़िगर करें। PropertyConfigurator का उपयोग URL4 को कॉन्फ़िगर करने के लिए यूआरएल को पार्स करने के लिए किया जाएगा जब तक यूआरएल ".xml" एक्सटेंशन के साथ समाप्त न हो जाए, जिस स्थिति में DOMConfigurator का उपयोग किया जाएगा। आप वैकल्पिक रूप से एक कस्टम विन्यासकर्ता निर्दिष्ट कर सकते हैं। Log4j.configuratorClass सिस्टम प्रॉपर्टी का मान आपके कस्टम कॉन्फ़िगरेटर के पूर्ण योग्य क्लास नाम के रूप में लिया जाता है। आपके द्वारा निर्दिष्ट कस्टम कॉन्फ़िगरेटर को कॉन्फ़िगरेटर इंटरफ़ेस को कार्यान्वित करना होगा।

रेफरी: http://logging.apache.org/log4j/1.2/manual.html

+0

यूआरएल log4j के जीवन संस्करण के अंत को दर्शाता है। निकटतम समतुल्य है: https://logging.apache.org/log4j/2.x/manual/configuration.html# सिस्टमप्रॉपर्टीज –

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