2013-07-18 6 views
6

की लॉगिंग कॉन्फ़िगरेशन रीसेट करता है दो परियोजनाएं: उत्पाद (प्रोजेक्ट-ए) और ए (प्रोजेक्ट-बी) के लिए ऑटो बेंचमार्क प्रोजेक्ट।<ant> कार्य का उपयोग करने वाली बिल्ड फ़ाइल को कॉलर

बी के निर्माण फ़ाइल में, हम निर्माण चलाने के लिए और बंडल-साथ-ऐप-सर्वर इस तरह की प्रक्रिया के लिए एक के निर्माण फ़ाइल कॉल करने की आवश्यकता: परियोजना बी में

<ant antfile="${build-file-A}" inheritall="false" target="all" /> 

और,, हम का एक बहुत है चींटी कार्य जो java.util.logging (जेडीके लॉगिंग फ्रेमवर्क) का उपयोग कर संदेश आउटपुट करते हैं।

समस्या यह है कि, उस पंक्ति के बाद, सभी जेडीके लॉगर आउटपुट गायब हो जाते हैं।

डिबगिंग के साथ, मुझे लगता है कि इस परियोजना को एक के निर्माण फ़ाइल, परियोजना एक में एक staticly परिभाषित बात LogManager.readConfiguration(InputStream) चलेंगे, जो एक कॉन्फ़िग फ़ाइल है कि केवल एक ही वर्ग के लकड़हारा विन्यास शामिल लोड हो जाता है की initialzation दौरान।

और readConfiguration के दौरान, LogManager.reset() कहा जाएगा; reset के दौरान, प्रत्येक लॉगर के प्रत्येक हैंडलर को हटा दिया जाएगा। <ant> कॉलर की उसी प्रक्रिया में लक्ष्य निर्माण फ़ाइल लोड करेगा, सभी हैंडलर हटा दिए जाएंगे।

तो, कॉन्फ़िगर किए गए एक को छोड़कर, जेडीके लॉगर का उपयोग करने वाली हर दूसरी कक्षा आउटपुट हैंडलर की कमी के कारण संदेशों को आउटपुट नहीं कर सकती है।

मेरा प्रश्न है:

वहाँ इस समस्या को हल करने के लिए किसी भी तरह से, के अलावा अन्य है: परियोजना ए का निर्माण फ़ाइल को चलाने के

  1. उपयोग <exec>;
  2. <ant> कॉल के बाद डिफ़ॉल्ट कॉन्फ़िगरेशन फ़ाइल से डिफ़ॉल्ट जेडीके लॉगिंग सेटिंग्स को पुनर्स्थापित करने के लिए readConfiguration() चलाने के लिए कोई कार्य लिखें।
  3. चींटी के अपने लॉगिंग ढांचे का उपयोग करें (टास्क.लॉग(), आदि)।

कृपया ध्यान दें कि मैं समस्या को रोकने के लिए प्रोजेक्ट ए को संशोधित नहीं कर सकता।

+0

वास्तव में "गायब" से आपका क्या मतलब है? – fge

+0

@ जेडके लॉगर का @ एफजी आउटपुट कंसोल में दिखाई नहीं देता है - कार्य सफलतापूर्वक निष्पादित किया जाता है, लेकिन कोई आउटपुट नहीं होता है। जैसा कि मैंने कहा था, 'रीड कॉन्फ़िगरेशन (इनपुटस्ट्रीम)', जो लॉगिंग संदेश स्वरूपित करता है और आउटपुट करता है, रूट रूटर का कंसोल हैंडलर हटा दिया जाता है। – coolcfan

+0

क्या चींटी कार्य वे जेडीके लॉगिंग का उपयोग कर रहे हैं या आपके द्वारा परिभाषित किए गए लक्ष्य जावा प्रोग्राम निष्पादित करते हैं जो लॉगिंग करते हैं? – Phani

उत्तर

1

आप LogManager के उपवर्ग बना सकते हैं और संचालकों की जरूरत है स्थापित करने के लिए reset और दो readConfiguration तरीकों ओवरराइड करने के लिए सक्षम हो सकता है। फिर statup पर अपना कस्टम कोड स्थापित करने के लिए java.util.logging.config.class सिस्टम प्रॉपर्टी का उपयोग करें।

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