2012-10-25 15 views
8

फ़ाइल के बजाए क्लासपाथ संसाधन के रूप में लॉगबैक कॉन्फ़िगरेशन को कैसे निर्दिष्ट करें मेरे पास निम्न स्थिति है। मुझे अलग-अलग बैच फ़ाइलों द्वारा लॉन्च किए गए दो प्रोग्राम चलाने में सक्षम होना चाहिए, जहां प्रत्येक बैच फ़ाइल एक जार क्लास को उसी जार से मुख्य() के साथ आमंत्रित करती है। मैं चाहता हूं कि प्रत्येक कार्यक्रम का अपना लॉग होना पड़े। हालांकि, दूसरा प्रोग्राम पहले के लिए एक इंस्टॉलर है, और इसलिए, मैं आसानी से निर्दिष्ट नहीं करना चाहता /Dlogback.configurationFile =/path/to/config फ़ाइल के रूप में उस स्थान के रूप में अभी तक मौजूद नहीं हो सकता है।फ़ाइल

Logback documentation seems to provide a solution लेकिन मैं कैसे बनाने के लिए का एक उदाहरण की जरूरत है यह काम:

एक प्रणाली संपत्ति

के रूप में डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ाइल का स्थान निर्दिष्ट अगर आप चाहें तो आप का स्थान निर्दिष्ट कर सकते हैं लॉगबैक.कॉन्फिगरेशनफाइल नामक एक सिस्टम प्रॉपर्टी के साथ डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ाइल। इस संपत्ति का मूल्य एक यूआरएल, कक्षा पथ पर संसाधन या को एप्लिकेशन के बाहर की फाइल में एक पथ हो सकता है।

जावा -Dlogback.configurationFile =/path/to/config.xml chapters.configuration.MyApp1

किसी को भी एक उदाहरण है जहां logback.configurationFile के रूप में classpath पर एक संसाधन के रूप में परिभाषित किया गया करने के लिए मुझसे बात कर सकते हैं फाइल सिस्टम का विरोध किया?

+0

यदि यह केवल लॉग-फ़ाइल है जिसे आप बदलना चाहते हैं तो लॉग-फ़ाइल को एक logback.xml कॉन्फ़िगरेशन फ़ाइल में चर के रूप में परिभाषित क्यों नहीं करें। यह विशेष रूप से अच्छा है अगर अधिकांश लॉगिंग कॉन्फ़िगरेशन समान है। फिर logfile नाम क्लासपाथ में किसी संसाधन से पढ़ा जा सकता है या इंस्टॉलर के आमंत्रण का हिस्सा बन सकता है। – andygavin

उत्तर

10

आप अपनी कक्षापथ प्रविष्टियों में से किसी एक की रूट में my-logback.xml डाल सकते हैं और -Dlogback.configurationFile=my-logback.xml निर्दिष्ट कर सकते हैं। आंतरिक रूप से यह फ़ाइल प्राप्त करने के लिए शायद ClassLoader#getResource(String name) का उपयोग करेगा - अधिक जानकारी के लिए इस विधि के जावाडॉक की जांच करें। नीचे दिए गए उदाहरणों के साथ:

+0

जो काम करेगा, मुझे लगता है, लेकिन जिज्ञासा से, आप क्लासपाथ पर रूट के नीचे एक जगह के लिए कैसे करेंगे? –

+1

नहीं, यह –

+1

काम नहीं करता है मैंने वास्तव में इसे आजमाया है और यह काम करता है। क्या आप अपना सेटअप दोबारा जांच सकते हैं? –

1

इस सवाल का जवाब आपूर्ति की कड़ी में है

सामग्री शामिल करने के लिए, एक फ़ाइल के रूप में संदर्भित किया जा सकता एक संसाधन के रूप में, या एक यूआरएल के रूप में।

As a file: 
To include a file use the file attribute. You can use relative paths but note that the current directory is defined by the application and is not necessarily related to the path of the configuration file. 

As a resource: 
To include a resource, i.e a file found on the class path, use the resource attribute. 

<include resource="includedConfig.xml"/> 

As a URL: 
To include the contents of a URL use the url attribute. 

<include url="http://some.host.com/includedConfig.xml"/>