2010-06-17 10 views
6

मेरे पास एक बहुत बड़ी लाइब्रेरी है जिसे मैंने विशेष रूप से अपने एंड्रॉइड एप्लिकेशन में उपयोग के लिए विकसित किया है। हालांकि व्यापार तर्क स्वयं एंड्रॉइड पर निर्भरता नहीं है। इसे संरक्षित करने के लिए, मैंने इस पुस्तकालय में कॉमन्स लॉगिंग का उपयोग किया और यह संबंधित जुनीट परीक्षण (जिसे मैं ग्रहण में चलाता हूं)।एंड्रॉइड में कोई कॉमन्स लॉगिंग नहीं है?

हालांकि अब मैं इसे एक गतिविधि में एकीकृत करना शुरू कर रहा हूं जिसे मैं एंड्रॉइड पर लॉन्च करता हूं, मैं अपना लॉगिंग काम करने में असमर्थ हूं। ग्रहण/जुनीट में, मैंने लॉगऑज की जार फ़ाइल के साथ-साथ log4j.properties फ़ाइल में खींच लिया था। डिवाइस पर तैनाती करते समय ऐसा लगता है कि यह काम नहीं करता है। इसे कई घंटों तक काम करने के प्रयास में संघर्ष करने के बाद, मैंने छोड़ दिया और एंड्रॉइड.टिल.लॉग के साथ अपने सभी कॉमन्स लॉगिंग सामान को बदलने की कोशिश की। अब मैं डिवाइस पर लॉग ऑन कर सकता हूं .. लेकिन सभी जुनीट परीक्षण टूटा हुआ है। जब कोई जुनीट android.util.Log का उपयोग करके लॉग इन करने का प्रयास करता है, तो यह एक रनटाइम अपवाद 'स्टब!' फेंकता है।

मैं अपने कॉमन्स लॉगिंग दृष्टिकोण पर वापस जाना पसंद करूंगा .. अगर कोई इसके साथ मदद कर सकता है .. अन्यथा .. 'एंड्रॉइड.यूटिल.लॉग' का उपयोग करके मेरे जुनीट टेस्ट केस चलाने के लिए मैं क्या कर सकता हूं?

अग्रिम में बहुत धन्यवाद .. मैंने इस पर कुछ घंटों से अधिक समय व्यतीत किया है और मैं फिर से असली कोड लिखने के लिए आगे बढ़ना चाहता हूं!

उत्तर

4

मुझे विश्वास नहीं है कि एंड्रॉइड एटीएम के लिए log4j पोर्ट है। हालांकि, एंड्रॉइड में java.util.logging बनाया गया है और कॉमन्स लॉगिंग Jdk14Logger के माध्यम से उस से कनेक्ट हो सकती है। यदि कॉमन्स लॉगिंग एंड्रॉइड पर काम करता है तो आप शायद जाने के लिए अच्छे होंगे।

1

आप अपने खुद के लॉगर के लिए एक इंटरफ़ेस बना सकते हैं कि प्लेटफ़ॉर्म के आधार पर प्लेटफ़ॉर्म पर आम तौर पर लॉगिंग के लिए प्रतिनिधि को तत्काल भेज दिया जाता है। जब तक आप काम कर रहे हों और डीबगिंग कर रहे हों, तब तक पर्याप्त होनी चाहिए, बाद में डिवाइस पर उत्पादन कोड में आप केवल एक लॉगर डाल सकते हैं जो कुछ भी नहीं करता है और आप फोनलॉग को अव्यवस्थित करने के लिए हर बार सहेजते हैं।

5

क्यूबर्टिकस का उल्लेख है, कॉमन्स-लॉगिंग एंड्रॉइड के भीतर काम करेगा। मैंने कॉमन्स-लॉगिंग लाइब्रेरी को एंड्रॉइड प्रोजेक्ट में छोड़कर और आईएनएफओ स्तर पर संदेशों को लॉग इन करके इसकी पुष्टि की। कॉमन्स-लॉगिंग जेडीके 14 लॉगिंग फ्रेमवर्क के लिए डिफ़ॉल्ट हो जाएगी, जो तब एंड्रॉइड लॉगिंग सबसिस्टम से गुजरती है, जिसके परिणामस्वरूप लॉगकैट में देखने योग्य परिणाम होते हैं। टैग उस वर्ग पर सेट है जिसका लॉग उपयोग किया जाता है: उदाहरण के लिए, LogFactory.getLog(Foo.class) से लॉग का उपयोग करने से टैग "फू" होगा।

0

एक नई परियोजना है, जो एंड्रॉइड पर log4j को सक्षम बनाता है। Slf4j पर log4j का उपयोग करना संभव है। यह LogCat के लिए एक एपेंडर भी प्रदान करता है। परियोजना android-logging-log4j या log4j support in android

1

पॉल का समाधान मेरे लिए काम नहीं करता है। इसके परिणामस्वरूप संकलन समय पर एक संघर्ष हुआ क्योंकि, ऐसा होता है, कॉमन्स लॉगिंग जार पहले ही एसडीके में शामिल है। मेरी परेशानी थी कि मैं इसके खिलाफ संकलन नहीं कर सका।

जोड़ना:

extensible.classpath=${sdk.dir}/tools/lib/commons-logging-1.1.1.jar 
मेरी ant.properties को

था चाल।

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