static synchronized void clearLogContext ( ) { final LogContext embeddedLogContext = Holder . LOG_CONTEXT ; // Remove the configurator and clear the log context final Configurator configurator = embeddedLogContext . getLogger ( "" ) . detach ( Configurator . ATTACHMENT_KEY ) ; // If this was a PropertyConfigurator we can use the LogContextConfiguration API to tear down the LogContext if ( configurator instanceof PropertyConfigurator ) { final LogContextConfiguration logContextConfiguration = ( ( PropertyConfigurator ) configurator ) . getLogContextConfiguration ( ) ; clearLogContext ( logContextConfiguration ) ; } else if ( configurator instanceof LogContextConfiguration ) { clearLogContext ( ( LogContextConfiguration ) configurator ) ; } else { // Remove all the handlers and close them as well as reset the loggers final List < String > loggerNames = Collections . list ( embeddedLogContext . getLoggerNames ( ) ) ; for ( String name : loggerNames ) { final Logger logger = embeddedLogContext . getLoggerIfExists ( name ) ; if ( logger != null ) { final Handler [ ] handlers = logger . clearHandlers ( ) ; if ( handlers != null ) { for ( Handler handler : handlers ) { handler . close ( ) ; } } logger . setFilter ( null ) ; logger . setUseParentFilters ( false ) ; logger . setUseParentHandlers ( true ) ; logger . setLevel ( Level . INFO ) ; } } } }
Attempts to clear the global log context used for embedded servers .