Logger.info और logger.debug के बीच अंतर


जवाबों:


30

यह लॉगिंग कॉन्फ़िगरेशन पर निर्भर करेगा। डिफ़ॉल्ट मूल्य उपयोग किए जा रहे ढांचे पर निर्भर करेगा। यह विचार यह है कि बाद में INFO से DEBUG तक कॉन्फ़िगरेशन सेटिंग को बदलकर आप पूरे आवेदन को फिर से देखे बिना मुद्रित की गई एक टन अधिक (या यदि अन्य तरह से) लाइनों को देखेंगे।

यदि आप सोचते हैं कि कौन सा उपयोग करना है तो यह सोचकर उबलता है कि आप किस स्तर पर देखना चाहते हैं। लॉग 4 जे में उदाहरण के लिए अन्य स्तरों के लिए एपीआई, http://log.apache.org/log4j/1.2/apidocs/org/apache/log4j/Level.html देखें


121

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

आपके सिस्टम के प्रत्येक घटक के लिए लॉग स्तर आमतौर पर एक कॉन्फ़िगरेशन फ़ाइल में एक पैरामीटर के माध्यम से नियंत्रित किया जाता है, इसलिए इसे बदलना आसान है। आपके कोड में विभिन्न स्तरों के साथ विभिन्न लॉगिंग स्टेटमेंट होंगे। जब जवाब में Exception, आप कॉल कर सकते हैं Logger.error। यदि आप किसी भी बिंदु पर एक चर के मूल्य को प्रिंट करना चाहते हैं, तो आप कॉल कर सकते हैं Logger.debug। आपके प्रोग्राम के भीतर एक कॉन्फ़िगर करने योग्य लॉगिंग स्तर और लॉगिंग स्टेटमेंट का यह संयोजन आपको इस बात पर पूर्ण नियंत्रण की अनुमति देता है कि आपका एप्लिकेशन इसकी गतिविधि को कैसे लॉग करेगा।

Log4j के मामले में कम से कम, लॉग स्तरों का क्रम है:

DEBUG < INFO < WARN < ERROR < FATAL

यहाँ उस लेख से एक छोटा उदाहरण दिया गया है जिसमें दिखाया गया है कि लॉग स्तर कैसे काम करता है।

   // get a logger instance named "com.foo"
   Logger logger = Logger.getLogger("com.foo");

   // Now set its level. Normally you do not need to set the
   // level of a logger programmatically. This is usually done
   // in configuration files.
   logger.setLevel(Level.INFO);

   Logger barlogger = Logger.getLogger("com.foo.Bar");

   // This request is enabled, because WARN >= INFO.
   logger.warn("Low fuel level.");

   // This request is disabled, because DEBUG < INFO.
   logger.debug("Starting search for nearest gas station.");

   // The logger instance barlogger, named "com.foo.Bar",
   // will inherit its level from the logger named
   // "com.foo" Thus, the following request is enabled
   // because INFO >= INFO.
   barlogger.info("Located nearest gas station.");

   // This request is disabled, because DEBUG < INFO.
   barlogger.debug("Exiting gas station search");

@momomo आप जानना चाहते हैं कि लॉग स्तर क्या है, यह जानने के लिए आप इस उत्तर की जाँच कर सकते हैं Trace
आरबीटी

आपके उदाहरण से If you want to print the value of a variable at any given point, you might call Logger.debugमुझे उस भ्रम को स्पष्ट करने में मदद मिली जो मेरे बीच Debugऔर Traceस्तर पर था। धन्यवाद!
राबर्ट

13

सभी संभावित स्तरों के सेट के बारे में एक स्पष्टीकरण, जो हैं:

ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF

9

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

अलग-अलग प्राथमिकताएं होने का मतलब है कि आप किसी विशेष घटक पर विस्तार के स्तर को यथोचित रूप से बारीक-बारीक तरीके से बारी-बारी से बदल सकते हैं - और केवल अंतर को देखने के लिए लॉगिंग कॉन्फ़िगरेशन (कोड के बजाय) को बदलने की आवश्यकता है।


3
  1. INFO का उपयोग उस जानकारी को लॉग करने के लिए किया जाता है जो आपका प्रोग्राम अपेक्षित रूप से काम कर रहा है।
  2. DEBUG का उपयोग उस कारण का पता लगाने के लिए किया जाता है जब आपका कार्यक्रम अपेक्षित रूप से काम नहीं कर रहा हो या अपवाद हुआ हो। यह डेवलपर के हित में है।

2

यह एक बहुत पुराना प्रश्न है, लेकिन मैं अपनी समझ यहाँ नहीं देखता हूँ इसलिए मैं अपने 2 सेंट जोड़ूंगा:

प्रत्येक स्तर उपयोगकर्ता के एक प्रकार के अनुरूप / मैप करता है:

  • डिबग: डेवलपर - मैनुअल डिबगिंग
  • ट्रेस: ​​स्वचालित लॉगिंग और चरण अनुरेखक - 3 स्तर के समर्थन के लिए
  • जानकारी: तकनीशियन / सहायता स्तर 1/2
  • चेतावनी: तकनीशियन / उपयोगकर्ता त्रुटि: स्वचालित अलर्ट / समर्थन स्तर 1
  • महत्वपूर्ण / घातक: आपके सेटअप पर निर्भर करता है - स्थानीय आईटी

0

Logger.debug और logger.info के बीच क्या अंतर है?

ये केवल कुछ डिफ़ॉल्ट स्तर पहले से ही परिभाषित हैं। आप चाहें तो अपने स्तर को परिभाषित कर सकते हैं। उन स्तरों का उद्देश्य आपके कोड में कोई बदलाव किए बिना उनमें से एक या अधिक को सक्षम / अक्षम करना है।

जब logger.debug छपेगा ??

जब आपने अपने कॉन्फ़िगरेशन में डीबग या किसी उच्च स्तर को सक्षम किया है।


0

यह निर्भर करता है कि आपने अपने लॉग 4 जे कॉन्फ़िगरेशन फ़ाइल में किस स्तर का चयन किया है।

<Loggers>
        <Root level="info">
        ...

यदि आपका स्तर "जानकारी" (डिफ़ॉल्ट रूप से) है, logger.debug(...)तो आपके कंसोल में मुद्रित नहीं किया जाएगा। हालांकि, यदि आपका स्तर "डिबग" है, तो यह होगा।

अपने कोड के महत्वपूर्ण स्तर के आधार पर, आपको निम्नलिखित में से सबसे सटीक स्तर का उपयोग करना चाहिए:

ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.