2012-04-03 14 views
6

मैं अपाचे कॉमन्स लाइब्रेरी और log4j का उपयोग कर रहा हूं। मेरे पास एक एक्सएमएल कॉन्फ़िगरेशन फ़ाइल और log4j.properties फ़ाइलें हैं। मैं अपने xml विन्यास फाइल के अंदर अपना log4j गुण पथ निर्दिष्ट करना चाहता हूं। अपनी सेटिंग्स लोड करने के लिए मुझे क्या:log4j चेतावनी समस्या - अपाचे कॉमन्स

//Loading my xml file 
this.config = new XMLConfiguration(this.xmlFileName); 

इस समय निम्न चेतावनी उठाया जाता है पर:

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

हालांकि मैं अभी तक कोई log4j वस्तु नहीं कहा जाता है। एक बार जब मैंने xml फ़ाइल पढ़ ली है तो मैं अपने log4j उदाहरण के साथ सफलतापूर्वक काम कर सकता हूं। क्या उन चेतावनियों को हटाने का कोई तरीका है?

उत्तर

1

Log4J आउटपुट जब एक लकड़हारा बनाई गई है इस त्रुटि है, लेकिन कोई appender (रों) परिभाषित (जाता है) है। अभ्यास में यह त्रुटि तब होती है जब log4j प्रारंभ होने से पहले एक लॉगर बनाया जाता है।

आप कहते हैं कि आपने कोई log4j ऑब्जेक्ट नहीं कहा है। लेकिन त्रुटि संदेश में आप देखते हैं कि org.apache.commons.configuration.ConfigurationUtils एक लॉगर ऑब्जेक्ट बनाता है (लाइन 66 देखें)।

आप इसे प्रारंभ से पहले बंद कर देते हैं, को देखने के How to turn off log4j warnings?

Logger.getRootLogger().setLevel(Level.OFF); 

फिर से के बाद से प्रारंभ सामान्य रूप से जड़ लकड़हारा के लॉग स्तर सेट इसे चालू करने के कोई जरूरत नहीं होना चाहिए सकता है।

+0

ठीक है, 'org.apache.commons.configuration.ConfigurationUtils' के अंदर LOG को अक्षम करने का कोई तरीका है या मेरे log4j गुणों को कॉन्फ़िगर करने के लिए मेरी xml कॉन्फ़िगरेशन का उपयोग किया गया है? – PapaSmurf

4

चेक अगर log4j.properties फ़ाइल classpath में है

यह लिंक उपयोगी हो सकता है: http://www.coderanch.com/t/63230/open-source/log-log-WARN-No-appenders

+0

मैं classpath में मेरी log4j.properties डालें, क्योंकि यह जार करने के लिए और एक अन्य निर्देशिका में बाहरी रखा गया है नहीं करना चाहती। मैं इसे अपने एप्लिकेशन कॉन्फ़िगरेशन फ़ाइल में निर्दिष्ट पथ का उपयोग करके रन-टाइम पर लोड करना चाहता हूं। – PapaSmurf

0

आपको कम से कम appender और लोड log4j में जड़ लकड़हारा के लिए लकड़हारा स्तर स्थापित करना चाहिए विन्यास फाइल। अन्यथा, आपको यह चेतावनी संदेश दिखाई देगा।

जड़ लकड़हारा के लिए appender और लकड़हारा स्तर की स्थापना का उदाहरण:

#Set root logger 's level and its appender to an appender called CONSOLE which is defined below. 
log4j.rootLogger=DEBUG, CONSOLE 

#Set the behavior of the CONSOLE appender 
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender 
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout 
log4j.appender.CONSOLE.layout.ConversionPattern=%d [%t] %-5p %c - %m%n 
0

मैं इस समाधान के साथ मेरी समस्या का समाधान:

//Disable log level 
Logger.getRootLogger().setLevel(Level.OFF); 

अब मैं चेतावनी के बिना मेरे xml विन्यास फाइल पढ़ सकते हैं।
सेट लॉग स्तर के बाद:

Logger.getRootLogger().setLevel(Level.INFO); 
+0

क्या यह समाधान मेरी पोस्ट के तहत मेरी टिप्पणी में सुझाया गया समाधान नहीं है? – ChrLipp

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