2012-04-29 17 views
8

मैं जावा लॉगिंग एपीआई में नया हूं और इस समस्या के साथ कुछ मदद की ज़रूरत है: एप्लिकेशन बनाते समय, मेरी कॉन्फ़िगरेशन फ़ाइल प्रोजेक्ट रूट फ़ोल्डर में संग्रहीत की गई थी, इसलिए मैंने प्रोग्राम चलाने के लिए -Djava.util.logging.config.file=logging.properties स्विच का उपयोग किया। लेकिन फिर मैंने निष्पादन योग्य जेएआर निर्यात किया। लॉगिंग को कॉन्फ़िगर कैसे करें? यह काम नहीं करता है, जब मैं -डी स्विच के साथ कॉन्फ़िगरेशन फ़ाइल के पथ निर्दिष्ट करता हूं।जार चलाने पर लॉगिंग को कॉन्फ़िगर कैसे करें?

उत्तर

6
ताकि आप आदेश पंक्ति पर या एक शॉर्टकट के साथ लॉगिंग गुण निर्दिष्ट करने के लिए है

आप MANIFEST.MF फ़ाइल में JVM तर्क निर्दिष्ट नहीं कर सकते:

java -Djava.util.logging.config.file=logging.properties -jar yourjar.jar 

नहीं तो आप एक गुण फ़ाइल पैकेज सकता है (आपके मामले में logging.properties) JAR में, स्टार्टअप पर पढ़ें और उन सेटिंग्स को सिस्टम गुणों में रखें।

3

The javadoc का कहना है:

"java.util.logging.config.class" 
"java.util.logging.config.file" 

ये दो गुण पसंद के माध्यम से स्थापित किया जा सकता है:

इसके अलावा, LogManager दो वैकल्पिक प्रणाली गुण कि प्रारंभिक विन्यास पढ़ने पर अधिक नियंत्रण के लिए अनुमति देने का उपयोग करता है एपीआई, या कमांड लाइन "जावा" कमांड की लाइन परिभाषाओं के रूप में, या सिस्टम प्रॉपर्टी परिभाषाएं JNI_CreateJavaVM को पास की गईं।

यदि "java.util.logging.config.class" संपत्ति सेट की गई है, तो संपत्ति मान को क्लास नाम के रूप में माना जाता है। दी गई कक्षा लोड हो जाएगी, एक ऑब्जेक्ट तत्काल हो जाएगा, और उस ऑब्जेक्ट का कन्स्ट्रक्टर प्रारंभिक कॉन्फ़िगरेशन में पढ़ने के लिए ज़िम्मेदार है। (वह ऑब्जेक्ट इसकी कॉन्फ़िगरेशन को नियंत्रित करने के लिए अन्य सिस्टम गुणों का उपयोग कर सकता है।) वैकल्पिक कॉन्फ़िगरेशन क्लास LogManager में गुणों को परिभाषित करने के लिए पढ़ने कॉन्फ़िगरेशन (इनपुटस्ट्रीम) का उपयोग कर सकते हैं।

तो, या तो java.util.logging.config.file प्रणाली संपत्ति का उपयोग करें, और जार फ़ाइल से बाहर कॉन्फ़िग फ़ाइल (जो शायद एक अच्छा विचार है अगर आप डिबग करने के लिए लॉगिंग गुण को अनुकूलित या कुछ विश्लेषण करने के लिए सक्षम होना चाहते हैं की दुकान अजीब व्यवहार), या जहां चाहें कॉन्फ़िगरेशन फ़ाइल को स्टोर करें (जार फ़ाइल में, उदाहरण के लिए), और java.util.logging.config.class सिस्टम प्रॉपर्टी का उपयोग उस वर्ग को लोड और तत्काल करने के लिए करें जो जार फ़ाइल में फ़ाइल को पढ़ेगा (Class.getResourceAsStream() का उपयोग करना)।

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

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