Log4j.rootLogger गुण का लॉग 4j.properties फ़ाइल में क्या महत्व है? यदि मैं इस संपत्ति का उपयोग नहीं करता तो क्या होगा?


86

फाइल log4j.rootLoggerमें संपत्ति का क्या महत्व है log4j.properties? यदि मैं इस संपत्ति का उपयोग नहीं करता तो क्या होगा?

उदाहरण :

# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=DEBUG, A1

# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender

अगर मैं इस संपत्ति को ERRORमोड पर सेट करता हूं तो क्या होगा ।

जवाबों:


94

समुद्रगुप्त अपनी पुस्तक 1 में बताते हैं :

Loggerवस्तु मुख्य उद्देश्य एप्लिकेशन डेवलपर के किसी भी संदेश लॉग इन करने का उपयोग करता है है। Loggerकिसी एप्लिकेशन के किसी विशेष उदाहरण में अभिनय करने वस्तुएं माता-पिता के बच्चे के पदानुक्रम का अनुसरण करती हैं

यदि आपके पास निम्न कॉन्फ़िगरेशन है:

log4j.rootLogger=WARN, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
log4j.logger.com.me.proj2=INFO

इस तरह से लकड़हारा पदानुक्रम तलाश में समाप्त हो सकता है: 2

पेड़

समुद्रगुप्त ने समझाया:

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

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

टिप्पणियाँ

1 समुंद्र गुप्ता, प्रो अपाचे लोग 4 जे, दूसरा संस्करण (बर्कले, सीए: एप्रेस, 2005), 24-25, आईएसएस 13: 978-1-59059-499-5

2 डोमिनिक मिशेल, जावा में लॉगिंग , http://happygiraffe.net/blog/2008/09/03/log-in-java/ , 26 मई 2014 को पुनःप्राप्त।


1
+1 के लिए "यह हमेशा सभी संभव लकड़हारे पदानुक्रमों के लिए रूट लॉगर के रूप में मौजूद है, और इसका कोई नामस्थान नहीं है।"
अजीम

2
ओपी के इस सवाल का जवाब क्या है - " अगर मैं इस संपत्ति का उपयोग नहीं करता तो क्या होगा? " ??
हैग्रवाल

4
गोश ... डोमिनिक के पेज के लिंक पर पृष्ठभूमि को देखें। बिल्कुल अपठनीय है।
मास्टरजॉय जूल

@ testerjoe2 - आप सही कह रहे हैं, जबकि इसकी एक सुंदर छवि है, जो इसे पढ़ना मुश्किल बना देती है - पुराने html दिनों की तरह जहां लोगों के पास सफेद पाठ के साथ एक पीले रंग की पृष्ठभूमि होगी - जिससे आपकी आँखें खून बहाना चाहती हैं!
15

10

जवाब देने के लिए

यदि मैं इस संपत्ति का उपयोग नहीं करता तो क्या होगा?

यदि आप rootLogger को एक स्तर और एक परिशिष्ट में सेट नहीं करते हैं, तो आपको एक चेतावनी मिलेगी।

उदाहरण के लिए, यदि आप लाइन को छोड़ देते हैं या टिप्पणी करते हैं, तो log4j.rootLogger=DEBUG, stdoutकहते हैं कि आपकी log4j.properties फ़ाइल में केवल रूट्लॉगर और कोई अतिरिक्त लकड़हारा नहीं है, यहां रूट लकड़हारा को टिप्पणी दी जा रही है:

#log4j.rootLogger=DEBUG, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout

आपको निम्न आउटपुट जैसा कुछ मिलेगा:

log4j:WARN No appenders could be found for logger (log4jtests.Log4jHelloWorld).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

7

log4j.rootLogger गुण रूट लॉगर के लिए स्तर (DEBUG यहाँ) और परिशिष्ट (A1 यहाँ) सेट करता है। यह अनिवार्य नहीं है। रूट लकड़हारा एक डिफ़ॉल्ट परिशिष्ट संलग्न नहीं है और यह एक परिशिष्ट के बिना मौजूद हो सकता है। तो, आपकी log4j प्रॉपर्टीज़ फ़ाइल इस प्रॉपर्टी को सेट किए बिना हो सकती है।

जावा में ऑब्जेक्ट क्लास के समान log4j पदानुक्रम में रूट लॉगर सर्वोच्च लॉगर है।

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