Database
 sql >> डेटाबेस >  >> RDS >> Database

जावा लॉगिंग की मूल बातें जानें

जावा ने JDK 1.4 से अपने ढांचे के एक भाग के रूप में एक लॉगिंग API लाइब्रेरी को शामिल किया। आज, यह जावा से एक अंतर्निहित समर्थन है। हालांकि, यह पुस्तकालय इस अर्थ में अनुकूलन योग्य और एक्स्टेंसिबल है कि हम तीसरे पक्ष के पुस्तकालयों द्वारा प्रदान किए गए एक या अधिक वैकल्पिक लॉगिंग समाधानों का उपयोग कर सकते हैं। यद्यपि इन तृतीय-पक्ष समाधानों का लॉग डेटा बनाने के लिए एक अलग दृष्टिकोण है, वे अंततः एप्लिकेशन रनटाइम से संदेशों को लॉग करने का एक ही लक्ष्य साझा करते हैं। यह आलेख लॉगिंग की मूल बातें बताता है और दिखाता है कि जावा प्रोग्राम में इसका उपयोग कैसे किया जा सकता है।

जावा लॉगिंग

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

  • अंतिम उपयोगकर्ताओं और सिस्टम प्रशासकों द्वारा समस्या निदान के लिए।
  • क्षेत्र सेवा इंजीनियरों के लिए लॉग किए गए संदेशों से समस्या का निदान करना और उसे शीघ्रता से ठीक करना सुविधाजनक है।
  • विकास संगठन किसी विशेष सबसिस्टम के आंतरिक निष्पादन का पता लगा सकता है और उसका विश्लेषण कर सकता है।
  • डेवलपर्स लॉग किए गए संदेशों से अंतर्निहित समस्या पर त्वरित अंतर्दृष्टि प्राप्त करके विकास के तहत एप्लिकेशन को डीबग कर सकते हैं।

जावा एपीआई लॉगिंग को एक सस्ते तरीके से इस अर्थ में डिज़ाइन किया गया है कि इसे उत्पादन अनुप्रयोग में भी अवशेष के रूप में छोड़ा जा सकता है। यह प्रोग्राम निष्पादन की दक्षता के लिए बहुत अधिक ओवरहेड नहीं बनाता है। एपीआई लॉग संदेशों के उत्पादन को गतिशील रूप से बदलने के लिए तंत्र प्रदान करता है ताकि अधिकतम दक्षता की आवश्यकता वाले संचालन के दौरान लॉगिंग के प्रभाव को कम किया जा सके। एपीआई में कई वर्ग और इंटरफेस होते हैं जिन्हें विस्तारित करके अनुकूलित किया जा सकता है। संपूर्ण लॉगिंग API java.util.logging . के अंतर्गत पैक किया गया है . इस पैकेज में कक्षाएं और इंटरफेस जावा में मुख्य लॉगिंग सुविधाएं प्रदान करते हैं।

लॉगिंग स्तर

जावा प्रोग्राम में लॉगिंग की तात्कालिकता को कई स्तरों में वर्गीकृत किया जा सकता है। ऊपर और नीचे लेवलिंग करके, हम प्रोडक्शन एप्लिकेशन में लॉगिंग की लागत को बढ़ा या घटा सकते हैं। इस प्रकार हम किसी एप्लिकेशन के निष्पादन की दक्षता को नियंत्रित करते हैं जहां इसकी एक या अधिक घटनाओं को लॉग करना आवश्यक होता है। यह स्तर . नामक एक वर्ग के माध्यम से प्राप्त किया जाता है , जो लॉगिंग के महत्व को परिभाषित करता है। लॉग स्तर स्थिर . द्वारा आदेशित और निर्दिष्ट किया गया है पूर्णांक स्थिरांक, जैसे:

  • स्तर.सभी: महत्व की परवाह किए बिना सभी संदेश लॉग किए जाते हैं
  • स्तर.ऑफ़: लॉगिंग बंद है
  • स्तर.सेवर: गंभीर विफलता का संकेत देता है; लॉग होना चाहिए
  • स्तर चेतावनी: चेतावनी संदेश इंगित करता है
  • Level.INFO: रनटाइम सूचनात्मक संदेश
  • Level.CONFIG: स्थिर विन्यास संदेश
  • स्तर ठीक: संदेशों को ट्रेस करना
  • स्तर.फाइनर: विस्तृत ट्रेसिंग संदेश
  • स्तर.सबसे बढ़िया: अत्यधिक विस्तृत ट्रेसिंग संदेश

लॉगिंग घटक

हमें एक लकड़हारा चाहिए जावा में किसी भी प्रकार की लॉगिंग करने के लिए उदाहरण। यह उदाहरण LogRecord . में डेटा लॉग करने के लिए ज़िम्मेदार है . लॉगरिकॉर्ड इंस्टेंस का उपयोग लॉगिंग फ्रेमवर्क और व्यक्तिगत लॉग हैंडलर के बीच लॉगिंग अनुरोधों को पारित करने के लिए किया जाता है। Java SE पांच प्रकार के बिल्ट-इन हैंडलर प्रदान करता है:StreamHandler , कंसोलहैंडलर , फ़ाइलहैंडलर , सॉकेटहैंडलर , और मेमोरीहैंडलर . हालाँकि, कोई एक नया हैंडलर बना सकता है या इनमें से किसी एक को अनुकूलन के रूप में विस्तारित कर सकता है। हैंडलर निर्धारित करते हैं कि लॉग रिकॉर्ड के साथ क्या करना है; उदाहरण के लिए, इसे स्थानीय भंडार में रखा जा सकता है या इसे नेटवर्क पर सर्वर पर पास किया जा सकता है। Java SE में दो मानक फ़ॉर्मेटर भी शामिल हैं:SimpleFormatter और XMLFormatter . इन स्वरूपकों का उपयोग LogRecord . को प्रारूपित करने के लिए किया जाता है मानव पठनीय प्रारूप और मानक एक्सएमएल प्रारूप में, क्रमशः।

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

एक साधारण लॉगिंग उदाहरण

एक लकड़हारा बनाना वस्तु बहुत सरल है। इसे स्पष्ट करने के लिए यहां एक बहुत ही सरल कोड दिया गया है।

import java.util.logging.Logger;
public class App {
   private static Logger logger =
      Logger.getLogger(App.class.getName());
   public static void main(String[] args) {
      logger.info("This is a log message  !!!");
      logger.info("The name of the logger is " +
         logger.getName() + " nwhich is same as class name: "
            + App.class.getName());
   }
}

लकड़हारा वस्तुओं को आमतौर पर स्ट्रिंग . का उपयोग करके नामित किया जाता है एक पदानुक्रमित डॉट-सेपरेटेड नेमस्पेस का मान। पिछले मामले में, यह वर्ग के नाम के समान है। नाम, हालांकि, एक मनमाना स्ट्रिंग मान हो सकता है, लेकिन आम तौर पर नाम पैकेज के नाम या लॉग किए गए घटक के वर्ग के नाम पर आधारित होते हैं। एक "गुमनाम" लकड़हारा बनाना भी संभव है जिसे लकड़हारा में संग्रहीत नहीं किया जाएगा नाम स्थान।

XML फ़ॉर्मेटिंग का उपयोग करके किसी बाहरी फ़ाइल में लॉग इन करना

निम्नलिखित कोड में, लॉग संदेशों को FileHandler . का उपयोग करके एक फ़ाइल पर पुनर्निर्देशित किया जाता है ।

नोट: फ़ाइल प्रोजेक्ट निर्देशिका में बनाई जाएगी।

फ़ाइलहैंडलर या तो किसी निर्दिष्ट फ़ाइल को लिख सकता है, या यह फ़ाइलों के घूर्णन सेट को लिख सकता है। फाइलों के घूर्णन सेट का मतलब है कि पुरानी फाइलों का नाम मूल फ़ाइल नाम में 0,1,2 और इसी तरह जोड़कर रखा गया है। XMLFormatter FileHandler . द्वारा उपयोग किया जाने वाला डिफ़ॉल्ट स्वरूपण है ।

import java.io.IOException;
import java.util.logging.FileHandler;
import java.util.logging.Level;
import java.util.logging.Logger;
public class App {
   private static FileHandler fileHandler;
   private static Logger logger =
      Logger.getLogger(App.class.getName());
   public static void main(String[] args) throws
         IOException {
      fileHandler = new
         FileHandler(App.class.getName() + ".log");
      logger.setLevel(Level.ALL);
      logger.addHandler(fileHandler);
      logger.info("Log message redirected to a file");
      logger.info("The name of the logger is " +
         logger.getName() + 
            " nwhich is same as class name: "
            + App.class.getName());
   }
}

कस्टम फ़ॉर्मेटिंग का उपयोग करके किसी बाहरी फ़ाइल में लॉग इन करना

हम संदेश के स्वरूपण को अनुकूलित करने के लिए निम्नलिखित कोड को थोड़ा बदल देंगे। यह बाहरी फ़ाइल में संदेशों के लिखे जाने के तरीके को बदल देता है।

नोट: फ़ॉर्मेटिंग कैसे बदली है, इसके बारे में लॉग फ़ाइल की सामग्री को देखें।
import java.io.IOException;
import java.util.logging.*;
public class App {
   private static FileHandler fileHandler;
   private static Logger logger =
      Logger.getLogger(App.class.getName());
   public static void main(String[] args) throws
         IOException {
      fileHandler = new
         FileHandler(App.class.getName() + ".log");
      logger.setLevel(Level.ALL);
      fileHandler.setFormatter(newCustomFormatter());
      logger.addHandler(fileHandler);
      logger.fine("Log message redirected to a file");
      logger.finer("The name of the logger is " +
         logger.getName());
      loggerfinest("This is same as class name: " +
         App.class.getName());
   }
   private static class CustomFormatter extends Formatter {
      private static final String format =
          "[%1$tF %1$tT] [%2$-4s] %3$s %n";
      public String format(LogRecord record) {
         returnString.format(format,
            record.getMillis(),
            record.getLevel().getLocalizedName(),
            record.getMessage());
      }
   }
}

बस इतना ही। जावा लॉगिंग के साथ प्रयोग करें और कई अन्य संभावनाओं का प्रयास करें। जहाँ भी आवश्यक हो, Java API दस्तावेज़ों से परामर्श करें।

जावा में अन्य लॉगिंग फ्रेमवर्क

कभी-कभी, तृतीय-पक्ष लॉगिंग ढांचे का उपयोग करना सुविधाजनक होता है, और चुनने के लिए कुछ लोकप्रिय लोग हैं। उदाहरण के लिए, SLF4J द्वारा प्रदान किया गया लॉगिंग एपीआई एक साधारण अग्रभाग पैटर्न का उपयोग करता है जो एक अमूर्त परत है जो एप्लिकेशन को इसके लॉगिंग ढांचे से अलग करने में सक्षम बनाता है। Log4j वाक्य रचनात्मक रूप से अंतर्निहित जावा लॉगिंग के समान है। कंसोल में सभी लॉग संदेशों को आउटपुट करने के लिए इसमें एक डिफ़ॉल्ट कॉन्फ़िगरेशन है। लॉगबैक, Log4j का उत्तराधिकारी है और इसके पूर्ववर्ती का विस्तार है। टिनीलॉग एक हल्का लॉगिंग ढांचा है जिसका उपयोग जावा और एंड्रॉइड दोनों के साथ किया जा सकता है।

निष्कर्ष

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

संदर्भ

  • जावा लॉगिंग अवलोकन
  • जावा एपीआई दस्तावेज़ीकरण

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. टी-एसक्यूएल बग, नुकसान, और सर्वोत्तम अभ्यास - नियतत्ववाद

  2. हेकाटन नमूनों के साथ कुछ छोटे मुद्दे

  3. टी-एसक्यूएल में एक तिथि से महीना कैसे प्राप्त करें

  4. अनदेखी टी-एसक्यूएल रत्न

  5. TimescaleDB को आसानी से कैसे परिनियोजित करें