@Override public void cleanup() { if (configuredSecurityAppenders) { Configuration log4jConfiguration = getRootLoggerContext().getConfiguration(); LoggerConfig loggerConfig = log4jConfiguration.getLoggerConfig(SECURITY_LOGGER_NAME); loggerConfig.removeAppender(GEODE_CONSOLE_APPENDER_NAME); loggerConfig.removeAppender(LOGWRITER_APPENDER_NAME); loggerConfig.setAdditive(false); getRootLoggerContext().updateLoggers(); } }
private boolean configureSecurityAppenders(final String name, final Level level) { Configuration log4jConfiguration = getRootLoggerContext().getConfiguration(); LoggerConfig loggerConfig = log4jConfiguration.getLoggerConfig(name); if (!loggerConfig.getName().equals(SECURITY_LOGGER_NAME)) { return false; } Appender stdoutAppender = log4jConfiguration.getAppender(GEODE_CONSOLE_APPENDER_NAME); Appender mainLogWriterAppender = log4jConfiguration.getAppender(LOGWRITER_APPENDER_NAME); if (stdoutAppender != null) { loggerConfig.addAppender(stdoutAppender, level, null); } if (mainLogWriterAppender != null) { loggerConfig.addAppender(mainLogWriterAppender, level, null); } loggerConfig.setAdditive(true); getRootLoggerContext().updateLoggers(); return true; }
@Override public void setAdditive(final boolean additive) { loggerConfig.setAdditive(additive); loggerContext.updateLoggers(); }
/** * Looks up the logger in the logger factory, * and attempts to find the real logger instance * based on the underlying logging framework * and retrieve the logger object. Then, updates the level. * This functionality at this point is heavily dependant * on the log4j API. * * @param loggerName the logger name * @param loggerLevel the logger level * @param additive the additive nature of the logger */ @WriteOperation public void updateLoggerLevel(@Selector final String loggerName, final String loggerLevel, final boolean additive) { val loggerConfigs = getLoggerConfigurations(); loggerConfigs.stream() .filter(cfg -> cfg.getName().equals(loggerName)) .forEachOrdered(cfg -> { cfg.setLevel(Level.getLevel(loggerLevel)); cfg.setAdditive(additive); }); this.loggerContext.updateLoggers(); }
@Override public void setUseParentHandlers(boolean uph) { LoggerContext ctx = (LoggerContext) LogManager.getContext(false); Configuration config = ctx.getConfiguration(); LoggerConfig loggerConfig = config.getLoggerConfig(this.logger.getName()); loggerConfig.setAdditive(uph); ctx.updateLoggers(); }
logConfig.setAdditive(additive); update = true;
/** * Marks a LoggerConfig as additive. This method is synchronized in case a Logger with the same name is being * updated at the same time. * * Note: This method is not used when configuring via configuration. It is primarily used by unit tests. * * @param logger The Logger the Appender will be associated with. * @param additive True if the LoggerConfig should be additive, false otherwise. */ @Override public synchronized void setLoggerAdditive(final org.apache.logging.log4j.core.Logger logger, final boolean additive) { final String loggerName = logger.getName(); final LoggerConfig lc = getLoggerConfig(loggerName); if (lc.getName().equals(loggerName)) { lc.setAdditive(additive); } else { final LoggerConfig nlc = new LoggerConfig(loggerName, lc.getLevel(), additive); nlc.setParent(lc); loggerConfigs.putIfAbsent(loggerName, nlc); setParents(); logger.getContext().updateLoggers(); } }