2011-04-07 32 views
16

log4j का उपयोग करके, मैं कैसे पता लगा सकता हूं कि वर्तमान DOMConfigurator फ़ाइल log4j.xml का नाम और पथ क्या है, PropertyConfigurator.configureAndWatch विधि का उपयोग कर फ़ाइल नाम को रीसेट करने के लिए, जिसे देखने के लिए इस फ़ाइल का नाम और पथ चाहिए अगर यह बदल गया है।log4j: कौन सी कॉन्फ़िगरेशन फ़ाइल का उपयोग किया गया था?

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

धन्यवाद।

उत्तर

21

मुझे डर है कि आपके पास एपीआई से स्वचालित रूप से उठाए गए पथ को पाने का कोई मौका नहीं है। जैसा कि मैं log4j के स्रोत कोड को समझता हूं, पता चला पथ का उपयोग किया जाएगा और संग्रहीत नहीं किया जाएगा।

कम से कम आपको स्टार्टअप पर उत्पादन log4j-आंतरिक डिबगिंग जानकारी के लिए -Dlog4j.debug संपत्ति का उपयोग कर सकते हैं और आप इस तरह की कुछ जानकारी मिल जाएगी:

log4j: Trying to find [log4j.xml] using context classloader [email protected] 
log4j: Using URL [file:/C:/develop/workspace/foobar/target/classes/log4j.xml] for automatic log4j configuration. 
log4j: Preferred configurator class: org.apache.log4j.xml.DOMConfigurator 

'log4j: Using URL ...' लाइन LogManager वर्ग से आता है। आप यहां से प्रारंभिक प्रक्रिया की जांच कर सकते हैं। जैसा कि मैंने देखा है कि यूआरएल बाद की जानकारी के लिए संग्रहीत नहीं किया जाएगा।

2

आप LogManager क्लास पर स्थिर प्रारंभिकरण पर log4j उपयोग के रूप में उसी प्रक्रिया का उपयोग कर सकते हैं। अन्य प्रारंभिकताओं और बाहरी विन्यासों के बारे में जागरूक रहें उदा। वसंत के org.springframework.web.util.Log4jConfigListener से।

public static URL getLog4jConfig() { 
    String override = OptionConverter.getSystemProperty("log4j.defaultInitOverride", null); 
    if (override == null || "false".equalsIgnoreCase(override)) { 
     String configurationOptionStr = OptionConverter.getSystemProperty("log4j.configuration", null); 

     URL url; 

     if (configurationOptionStr == null) { 
     url = Loader.getResource("log4j.xml"); 
     if (url == null) { 
      url = Loader.getResource("log4j.properties"); 
     } 
     } else { 
     try { 
      url = new URL(configurationOptionStr); 
     } catch (MalformedURLException ex) { 
      url = Loader.getResource(configurationOptionStr); 
     } 
     } 
     return url; 
    } else { 
     return null; 
    } 
    } 
संबंधित मुद्दे

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