private AppenderRef getAppenderRef(final List<AppenderRef> appenderRefList, final String refName) { for (final AppenderRef ref : appenderRefList) { if (ref.getRef().equalsIgnoreCase(refName)) { return ref; } } return null; } /*
/** * 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 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; } }
/** * 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; } }
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()); } }
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)); }
/** * 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)); }
@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(); }
@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(); }
/** 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); } }
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);