@Override public void activateAsync(List<Object[]> args) { Map<String, Appender> appenders = logger.getAppenders(); if (appenders == null) { throw new IllegalStateException("Activate async appender failed, no appender exist."); } AppenderRef[] refs = new AppenderRef[appenders.size()]; int i = 0; for (Appender appender : appenders.values()) { configuration.addAppender(appender); refs[i++] = AppenderRef.createAppenderRef(appender.getName(), null, null); } AsyncAppender.Builder builder = AsyncAppender.newBuilder() .setName(productName + "." + logger.getName() + ".AsyncAppender") .setConfiguration(configuration) .setAppenderRefs(refs) .setBlockingQueueFactory(ArrayBlockingQueueFactory.<LogEvent>createFactory()); invokeMethod(builder, args); AsyncAppender asyncAppender = builder.build(); asyncAppender.start(); removeAllAppenders(logger); logger.addAppender(asyncAppender); setProductName(productName); }
private boolean hasAppenderRefFilter(final Configuration config) { for (LoggerConfig loggerConfig : config.getLoggers().values()) { boolean isRoot = loggerConfig.getName().equals(""); boolean isGemFire = loggerConfig.getName().startsWith(GEODE_LOGGER_PREFIX); if (isRoot || isGemFire) { // check for AppenderRef Filter for (AppenderRef appenderRef : loggerConfig.getAppenderRefs()) { if (appenderRef.getFilter() != null) { return true; } } } } return false; } }
private AppenderRef getAppenderRef(final List<AppenderRef> appenderRefList, final String refName) { for (final AppenderRef ref : appenderRefList) { if (ref.getRef().equalsIgnoreCase(refName)) { return ref; } } return null; } /*
private void resolveAppender() { if (appenderControl == null) { Appender appender = configuration.getAppender(appenderRef.getRef()); if (appender == null) { throw new ConfigurationException("No failover appender named " + appenderRef.getRef() + " found"); } appenderControl = new AppenderControl(appender, appenderRef.getLevel(), appenderRef.getFilter()); } }
/** * Extension point - let's allow to customize e.g.: LogEvent type or any other param * * @param failedPayload payload to be handled */ protected void doDeliver(String failedPayload) { appenderControl.callAppender(DefaultLogEventFactory.getInstance().createEvent(appenderRef.getRef(), null, getClass().getName(), appenderRef.getLevel(), new SimpleMessage(failedPayload), null, null)); }
private void resolveAppender() { if (appenderControl == null) { Appender appender = configuration.getAppender(appenderRef.getRef()); if (appender == null) { throw new ConfigurationException("No failover appender named " + appenderRef.getRef() + " found"); } appenderControl = new AppenderControl(appender, appenderRef.getLevel(), appenderRef.getFilter()); } }
/** * Extension point - let's allow to customize e.g.: LogEvent type or any other param * * @param failedPayload payload to be handled */ protected void doDeliver(String failedPayload) { appenderControl.callAppender(DefaultLogEventFactory.getInstance().createEvent(appenderRef.getRef(), null, getClass().getName(), appenderRef.getLevel(), new SimpleMessage(failedPayload), null, null)); }
final AppenderRef ref = AppenderRef.createAppenderRef("File", null, null); final AppenderRef[] refs = new AppenderRef[] {ref};
@Override public void start() { final Map<String, Appender> map = config.getAppenders(); final List<AppenderControl> appenders = new ArrayList<>(); for (final AppenderRef appenderRef : appenderRefs) { final Appender appender = map.get(appenderRef.getRef()); if (appender != null) { appenders.add(new AppenderControl(appender, appenderRef.getLevel(), appenderRef.getFilter())); } else { LOGGER.error("No appender named {} was configured", appenderRef); } } if (errorRef != null) { final Appender appender = map.get(errorRef); if (appender != null) { errorAppender = new AppenderControl(appender, null, null); } else { LOGGER.error("Unable to set up error Appender. No appender named {} was configured", errorRef); } } if (appenders.size() > 0) { thread = new AsyncThread(appenders, queue); thread.setName("AsyncAppender-" + getName()); } else if (errorRef == null) { throw new ConfigurationException("No appenders are available for AsyncAppender " + getName()); } asyncQueueFullPolicy = AsyncQueueFullPolicyFactory.create(); thread.start(); super.start(); }
@Override public void start() { for (final AppenderRef ref : appenderRefs) { final String name = ref.getRef(); final Appender appender = config.getAppender(name); if (appender != null) { final Filter filter = appender instanceof AbstractAppender ? ((AbstractAppender) appender).getFilter() : null; appenders.put(name, new AppenderControl(appender, ref.getLevel(), filter)); } else { LOGGER.error("Appender " + ref + " cannot be located. Reference ignored"); } } super.start(); }
/** * Returns the names of the appenders that this asyncAppender delegates to as an array of Strings. * * @return the names of the sink appenders */ public String[] getAppenderRefStrings() { final String[] result = new String[appenderRefs.length]; for (int i = 0; i < result.length; i++) { result[i] = appenderRefs[i].getRef(); } return result; }
@Override public void evaluate() throws Throwable { final CompositeConfiguration config = (CompositeConfiguration) lcr.getConfiguration(); final List<AppenderRef> appenderRefList = config.getLogger("cat1").getAppenderRefs(); final AppenderRef appenderRef = getAppenderRef(appenderRefList, "STDOUT"); assertTrue("Expected cat1 STDOUT appenderRef to have a regex filter", appenderRef.getFilter() != null && appenderRef.getFilter() instanceof RegexFilter); } };
private void addLoggerWithRef(Configuration configuration, LoggerConfig rootLogger, AppenderTypeEn type, Appender appender) { if (type.isSubRootAppender()) { Level level = type.getLevel(); rootLogger.addAppender(appender, level, null); } else { AppenderRef ref = AppenderRef.createAppenderRef(type.getName(), null, null); AppenderRef[] refs = new AppenderRef[] {ref}; LoggerConfig loggerConfig = LoggerConfig.createLogger(false, type.getLevel(), type.getName(), "true", refs, null, configuration, null); loggerConfig.addAppender(appender, type.getLevel(), null); addLogger(type.getName(), loggerConfig); } } }
final LoggerConfig loggerConfig = entry.getValue(); for (final AppenderRef ref : loggerConfig.getAppenderRefs()) { final Appender app = appenders.get(ref.getRef()); if (app != null) { loggerConfig.addAppender(app, ref.getLevel(), ref.getFilter()); } else { LOGGER.error("Unable to locate appender \"{}\" for logger config \"{}\"", ref.getRef(), loggerConfig);
@Override public String[] getAppenderRefs() { final List<AppenderRef> refs = loggerConfig.getAppenderRefs(); final String[] result = new String[refs.size()]; for (int i = 0; i < result.length; i++) { result[i] = refs.get(i).getRef(); } return result; } }
public static boolean hasAppenderRefFilter(final Configuration config) { for (LoggerConfig loggerConfig : config.getLoggers().values()) { boolean isRoot = loggerConfig.getName().equals(""); boolean isGemFire = loggerConfig.getName().startsWith(LogService.BASE_LOGGER_NAME); boolean hasFilter = loggerConfig.hasFilter(); boolean isGemFireVerboseFilter = hasFilter && LogService.GEMFIRE_VERBOSE_FILTER.equals(loggerConfig.getFilter().toString()); if (isRoot || isGemFire) { // check for AppenderRef Filter for (AppenderRef appenderRef : loggerConfig.getAppenderRefs()) { if (appenderRef.getFilter() != null) { return true; } } } } return false; } }
config.addAppender(fileInfoAppender); fileInfoAppender.start(); AppenderRef fileInfoRef = AppenderRef.createAppenderRef("FileInfo", null, fileInfoFilter); config.addAppender(consoleWarnAppender); consoleWarnAppender.start(); AppenderRef consoleWarnAppenderRef = AppenderRef.createAppenderRef("ConsoleWarn", Level.WARN, consoleWarnFilter); AppenderRef consoleErrorAppenderRef = AppenderRef.createAppenderRef("ConsoleError", Level.WARN, null);
/** * Returns the appender references. * @param refs The references to return. * @return The appender references. */ @PluginFactory public static String[] createFailovers(@PluginElement("AppenderRef") final AppenderRef... refs) { if (refs == null) { LOGGER.error("failovers must contain an appender reference"); return null; } final String[] arr = new String[refs.length]; for (int i = 0; i < refs.length; ++i) { arr[i] = refs[i].getRef(); } return arr; } }
AppenderRef appenderRef = AppenderRef.createAppenderRef("RollingMonitor", Level.INFO, thresholdFilter); AppenderRef[] appenderRefs = new AppenderRef[]{appenderRef}; LoggerConfig loggerConfig = LoggerConfig.createLogger(false, Level.INFO, "com.dianwoba.monitor.client.MonitorUtilImpl", "true", appenderRefs, null, configuration, null); addLogger("com.dianwoba.monitor.client.MonitorUtilImpl", loggerConfig); appenderRef = AppenderRef.createAppenderRef("RollingRiderMq", Level.INFO, thresholdFilter); appenderRefs = new AppenderRef[]{appenderRef}; loggerConfig = LoggerConfig.createLogger(false, Level.INFO, "com.dianwoba.rider.stalker.client.RiderClinetCacheKeeperConsumer", "true", appenderRefs, null, configuration, null); addLogger("com.dianwoba.rider.stalker.client.RiderClinetCacheKeeperConsumer", loggerConfig); appenderRef = AppenderRef.createAppenderRef("RollingRiderSpace", Level.INFO, thresholdFilter); appenderRefs = new AppenderRef[]{appenderRef}; loggerConfig = LoggerConfig.createLogger(false, Level.INFO, "com.dianwoba.dispatch.client.cache.rider.space.listener.RiderSpaceCaffeineListener", "true", appenderRefs, null, configuration, null);
/** Modifies the log4j config to add the policy **/ public static void install() { Logger rootLogger = (Logger) LogManager.getRootLogger(); LoggerConfig loggerConfig = rootLogger.get(); // Remove appender refs from config List<AppenderRef> appenderRefs = new ArrayList<>(loggerConfig.getAppenderRefs()); for (AppenderRef appenderRef : appenderRefs) { loggerConfig.removeAppender(appenderRef.getRef()); } // Create the RewriteAppender, which wraps the appenders RewriteAppender rewriteAppender = RewriteAppender.createAppender( "VanillaFixDeobfuscatingAppender", "true", appenderRefs.toArray(new AppenderRef[0]), rootLogger.getContext().getConfiguration(), new DeobfuscatingRewritePolicy(), null ); rewriteAppender.start(); // Add the new appender loggerConfig.addAppender(rewriteAppender, null, null); } }