2012-02-16 29 views

Trả lời

11

Đây là mã nguồn của JMXConfigurator.reloadDefaultConfiguration():

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

gì về chỉ chạy mã này bất cứ nơi nào bạn cần nó?

Vấn đề duy nhất là biến số loggerContext. Bạn có thể lấy nó bằng cách sử:

(LoggerContext)LoggerFactory.getILoggerFactory() 

Đáng tiếc là nó không giống như có API tốt yếu tố để làm điều này, những gì về nâng cao một issue? Ngoài ra, bạn có biết rằng Logback có tính năng tự động làm mới không?

+1

Yea, nghĩ về việc sử dụng tính năng tự động làm mới nhưng vỉa một chút đáng sợ để kích hoạt nó trên bất cứ điều gì khác hơn là môi trường dev của tôi – Yony

12

tôi đã sử dụng đoạn mã sau cho mục đích này:

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

này không xử lý định cấu hình đăng nhập bằng tệp .groovy ... ném 'org.xml.sax.SAXParseException' – JohnTheBeloved

Các vấn đề liên quan