2010-05-05 10 views
30

कहां रखा जाए, हम कैसे निर्दिष्ट कर सकते हैं कि log4j को इसकी xml कॉन्फ़िगरेशन फ़ाइल खोजने का प्रयास करते समय देखना है?log4j.xml

ऐसा लगता है कि डिफ़ॉल्ट रूप से, log4j क्लास फ़ोल्डर की जड़ में दिखता है, मैं कह सकता हूं कि डीबग लॉग 4j कार्यक्षमता का उपयोग करके और आईडीई से अपना एप्लिकेशन चला रहा है।

हालांकि, मेरे पास अब मेरे जार में कोई क्लास फ़ोल्डर नहीं है। और log4j.xml फ़ाइल जार की जड़ पर है।

मैंने पहले ही विकल्प -Dlog4j.configuration = log4j.xml सेट करने का प्रयास किया है लेकिन यह काम नहीं करता है।

  • कॉम
  • lib
  • मेटा-inf
  • log4j.xml
+1

log4j 2.0 या अधिक का उपयोग करते समय, फ़ाइल का नाम 'log4j2.xml' होना चाहिए – Francois

उत्तर

29

यह log4j पाता है:

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

http://wiki.apache.org/logging-log4j/Log4jConfigurationHelp

आप "-Dlog4j.debug" के साथ चलाते हैं तो log4j यह कैसे कॉन्फ़िगर ही करने की कोशिश कर रहा है कह मानक उत्पादन के लिए जानकारी का प्रिंट आउट होगा से

। उस के माध्यम से देखकर आपको यह बताएगा कि यह कॉन्फ़िगरेशन फ़ाइल कहां देख रहा है।

+0

Log4j.xml मेरे फ़ोल्डर की जड़ पर है। और यह फ़ोल्डर मेरे क्लासपाथ में शामिल है। हालांकि, यह log4j द्वारा उठाया नहीं जा रहा है ...:/ – Farid

+0

मुझे इस डीबगिंग कार्यक्षमता के बारे में पता है, लेकिन ऐसा लगता है कि यह काम नहीं कर रहा है। लॉग सिर्फ कंसोल पर मुद्रित है, और मुझे कोई डीबग लॉग नहीं दिख रहा है। मुझे कोई त्रुटि नहीं है ... मैं पूरी तरह से खो गया हूँ। – Farid

+0

यदि डीबग पार्म लॉग 4 जे कॉन्फ़िगरेशन फ़ाइल के पथ और फ़ाइल नाम को लोड नहीं करता है, तो मुझे आश्चर्य होगा कि एप्लिकेशन कैसे शुरू किया जा रहा था। क्या यह एक बैच फ़ाइल के माध्यम से है? आप किस आईडीई का उपयोग कर रहे हैं? –

5

मैं किसी भी त्रुटि

नहीं है

तो log4j आपके विन्यास की खोज कर रहा है, अन्यथा आप मिल जाएगा:

log4j: चेतावनी नहीं appenders लकड़हारा के लिए पाया जा सकता है ()।
log4j: चेतावनी कृपया log4j सिस्टम को ठीक से प्रारंभ करें।

इसके अलावा:

लॉग सिर्फ सांत्वना

पर बाहर मुद्रित कर रहे हैं तो इसका मतलब है कि आप शायद FileAppender या RollingFileAppender की तरह, एक फ़ाइल appender परिभाषित करने की जरूरत। the short intro पर "कॉन्फ़िगरेशन" अनुभाग में कुछ उदाहरण हैं।

-2

इसे कहां रखना है इसके बारे में चिंता न करें। बस अपनी परियोजना को चलाएं, ग्रहण में कहें, log4j एक अपवाद फेंक देगा, आपको बताएगा कि यह कहां देख रहा था। फिर आप इसे वहां रख सकते हैं।

एक बार जब आप इसे काम कर लेंगे, तो आप यह भी समझेंगे कि इसे कैसे बदला जाए, जैसा कि आप तर्क समझते हैं।

+1

ग्रहण में एक अपवाद फेंक दिया गया है, लेकिन यह आपको नहीं बताता कि यह फ़ाइल कहां ढूंढ रहा है। – Knoxie

+0

कंसोल-आउटपुट कहता है: "त्रुटि स्थिति लॉगर कोई log4j2 कॉन्फ़िगरेशन फ़ाइल नहीं मिली। डिफ़ॉल्ट कॉन्फ़िगरेशन का उपयोग करना: कंसोल में केवल त्रुटियों को लॉग करना। Log4j2 आंतरिक प्रारंभिक लॉगिंग दिखाने के लिए सिस्टम प्रॉपर्टी 'log4j2.debug' सेट करें।" तो मददगार नहीं, क्षमा करें। – VinZ

3

आप उपयोग कर सकते हैं:

DOMConfigurator.configure(log4jConfigurationFilename); 

और अगर यह जड़ के अलावा अन्य है स्थान को निर्दिष्ट!

18

मान लीजिए कि आपकी log4j कॉन्फ़िगरेशन स्रोत पेड़ के बाहर है। यह आपके विन्यास फाइल नहीं मिल रही है, के साथ मदद:

-Dlog4j.configuration=file:///your/path/log4j.xml 

नोट क्वालीफायर file: ///। यह बिना काम नहीं करेगा।

+0

हाय rwst: मैं tomcat vm तर्क से laback.xml लोड करना चाहता हूं लेकिन यह काम नहीं कर रहा है, क्या आप कोई विचार सुझा सकते हैं? –

+0

यह उत्तर -Dlog4j.debug विकल्प के साथ यह पता लगाने के लिए बिल्कुल सही है कि क्या हो रहा है। –

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