2013-08-19 10 views
6

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

यह आवेदन कुछ लंबी चलने वाली कार्रवाई जिसके लिए एक प्रगति बार उपयुक्त होगा है।

लॉग 4 जे या लॉगबैक का उपयोग करके इसे कार्यान्वित करने का सबसे अच्छा तरीका क्या है?

+0

मुझे प्रश्न समझ में नहीं आता है। लॉग प्रविष्टि में आप प्रगति पट्टी कैसे प्रदर्शित करेंगे? यदि आप पहले से ही प्रगति को जानते हैं, तो xx% क्यों मुद्रित नहीं करें? – ChrisM

उत्तर

3

कंसोल पर प्रगति पट्टी या किसी भी प्रकार के पाठ को लिखने के लिए, \n (नई लाइन) के बजाय बस अपना आउटपुट \r (कैरिज रिटर्न) के साथ समाप्त करें ताकि अगली पंक्ति इसे ओवरराइट कर सके। यह question अधिक जानकारी में जाता है। F-ANSI लाइब्रेरी आपको पिछली लाइन को ओवरराइट करने सहित आसानी से दिखने वाले कंसोल आउटपुट को सक्षम करने में सक्षम बनाता है।

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

ऐसा लगता है कि आप ऐसा करना चाहते हैं जो आपके प्रोग्राम के वास्तविक आउटपुट से लॉगिंग को अलग करता है (यह आम तौर पर एक अच्छा विचार है, प्रगति पट्टी के मुद्दे को भी अनदेखा करता है)। प्रोग्राम के निष्पादन के बारे में जानकारी लॉग इन करने के लिए अपने लॉगिंग फ्रेमवर्क का उपयोग करें; चीजें जिन्हें आप या किसी को डिबगिंग करना चाहते हैं। वास्तविक प्रोग्राम का आउटपुट सीधे पर System.out के माध्यम से लिखा जाना चाहिए।

फिर आप अलग-अलग निर्णय ले सकते हैं कि आप अपने लॉगिंग के साथ क्या करना चाहते हैं। इसे stdout पर भी लिखा जा सकता है, और आपके लॉग और आउटपुट एक साथ रह सकते हैं, लेकिन stderr (जो इसे अधिक आसान पुनर्निर्देशित करता है) या एक लॉग फ़ाइल (जो आपके प्रोग्राम के आउटपुट क्लीनर को बनाता है, और आपके लॉग को जारी रखता है) को लिखना बेहतर होगा बाद में संदर्भ के लिए)।


इसके अलावा, अगर जावा एक शर्त pv आदेश के माध्यम से यह पहुंचाया डेटा की मात्रा के आधार पर एक शक्तिशाली, अनुकूलन प्रगति बार प्रदान करता है नहीं है।

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