2012-02-16 15 views
14

मुझे पता है कि एक रीलोड डिफॉल्ट कॉन्फ़िगरेशन() जेएमएक्स ऑपरेशन है, लेकिन एमबीन का उदाहरण प्राप्त किए बिना और इस ऑपरेशन का आह्वान किए बिना, डिफ़ॉल्ट कॉन्फ़िगरेशन को फिर से लोड करने के लिए लॉगबैक एपीआई है (वैकल्पिक रूप से लॉग कॉन्फ़िगरेशन निर्दिष्ट करना फ़ाइल पथ)?कॉन्फ़िगरेशन को रीलोड करने के लिए मैं प्रोग्रामेटिक रूप से लॉगबैक कैसे बता सकता हूं

उत्तर

11

यह JMXConfigurator.reloadDefaultConfiguration() के स्रोत कोड है:

public void reloadDefaultConfiguration() throws JoranException { 
    ContextInitializer ci = new ContextInitializer(loggerContext); 
    URL url = ci.findURLOfDefaultConfigurationFile(true); 
    loggerContext.reset(); 
    ci.configureByResource(url); 
} 

आपको उपलब्ध हो जाए तो बस इस कोड चलाने के बारे में क्या?

एकमात्र समस्या loggerContext चर है।

(LoggerContext)LoggerFactory.getILoggerFactory() 

दुर्भाग्य से यह नहीं लगता है जैसे यह करने के लिए अच्छी तरह से सकारात्मक असर एपीआई, क्या एक issue बढ़ाने के बारे में: आप इसे का उपयोग कर प्राप्त कर सकते हैं? क्या आप जानते हैं कि लॉगबैक में अंतर्निहित ऑटो-रीफ्रेशिंग सुविधा है?

+1

हां, ऑटो-रीफ़्रेशिंग सुविधा का उपयोग कर के बारे में सोचा लेकिन मेरे देव वातावरण – Yony

12

मैं इस उद्देश्य के लिए निम्न कोड का प्रयोग किया:

public static void reloadLogger() { 
    LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory(); 

    ContextInitializer ci = new ContextInitializer(loggerContext); 
    URL url = ci.findURLOfDefaultConfigurationFile(true); 

    try { 
     JoranConfigurator configurator = new JoranConfigurator(); 
     configurator.setContext(loggerContext); 
     loggerContext.reset(); 
     configurator.doConfigure(url); 
    } catch (JoranException je) { 
     // StatusPrinter will handle this 
    } 
    StatusPrinter.printInCaseOfErrorsOrWarnings(loggerContext); 
} 
+0

इस संभाल नहीं करता है के अलावा और कुछ पर इसे सक्षम करने के लिए थोड़ा डरावना तेजी एक .groovy फ़ाइल का उपयोग कर लॉगबैक को कॉन्फ़िगर करना ... 'org.xml.sax.SAXParseException' फेंकता है – JohnTheBeloved

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

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