/** * Container install method. Performs two steps: installs this repository selector into the log4j logmanager, and * clears the system property which prevents log4j from initializing (thus allowing other log4j instances to be * started and configured independently). */ public void start() { LogManager.setRepositorySelector(this, guard); AccessController.doPrivileged(new PrivilegedAction<Void>() { public Void run() { try { System.clearProperty("log4j.defaultInitOverride"); } catch (SecurityException ex) { log.log(Level.WARN, "Unable to clear system property 'log4j.defaultInitOverride': " + ex.getMessage() + " (nested log4j deployments may not function as expected"); } return null; } }); } }
@VisibleForTesting static void initializeLogger() { LogManager.setRepositorySelector(new DefaultRepositorySelector(new DelegatingLoggerRepository(LogManager.getLoggerRepository())), null); }
@Override public void close() throws Exception { synchronized (this) { try { try { closeQuietly(_installation); } finally { _installation = null; } } finally { try { try { if (_selector != null) { setRepositorySelector(_originalSelector, null); } } finally { try { closeQuietly(_loggerFactoryRegistration); } finally { _loggerFactoryRegistration = null; } } } finally { _loggerFactory = null; _selector = null; } } } }
/** * Register with this repository selector. */ public static synchronized void init() { if (!initialized) // set the global RepositorySelector { defaultRepository = LogManager.getLoggerRepository(); RepositorySelector theSelector = new ContextRepositorySelector(); LogManager.setRepositorySelector(theSelector, guard); initialized = true; } Hierarchy hierarchy = new Hierarchy(new RootLogger(Level.DEBUG)); ClassLoader loader = Thread.currentThread().getContextClassLoader(); try { loadLog4JConfig(hierarchy, loader); } catch (Exception e) { throw new RuntimeException("Could not initialize ContextRepositorySelector", e); } repositories.put(loader, hierarchy); }
org.apache.log4j.LogManager.setRepositorySelector(new NFRepositorySelector(nfHierarchy), guard);
public void init(@Nonnull Log4JBasedLoggingEnvironmentConfiguration with) { synchronized (this) { if (_selector == null) { _originalSelector = findOriginalSelector(); _selector = createSelectorFor(with); _loggerFactory = new LoggerFactory(_selector.getLoggerRepository()); setRepositorySelector(_selector, null); _loggerFactoryRegistration = LoggerFactoryRegistry.register(_loggerFactory); if (with.isInstallSl4jRequired()) { _installation = Slf4jUtils.tryInstallSlf4jBridges(_loggerFactory); } } } }