@PluginFactory public static SlidingFilenameRolloverStrategy createStrategy( @PluginConfiguration Configuration config) { return new SlidingFilenameRolloverStrategy(); }
@PluginFactory public static LlapWrappedAppender createAppender( @PluginAttribute("name") final String name, // This isn't really used for anything. @PluginAttribute("renameFileOnClose") final String renameFileOnCloseProvided, @PluginAttribute("renamedFileSuffix") final String renamedFileSuffixProvided, @PluginNode final Node node, @PluginConfiguration final Configuration config ) { if (config == null) { LOGGER.error("PluginConfiguration not expected to be null"); return null; } if (node == null) { LOGGER.error("Node must be specified as an appender specification"); return null; } boolean renameFileOnClose = DEFAULT_RENAME_FILES_ON_CLOSE; if (Strings.isNotBlank(renameFileOnCloseProvided)) { renameFileOnClose = Boolean.parseBoolean(renameFileOnCloseProvided); } String renamedFileSuffix = DEFAULT_RENAMED_FILE_SUFFIX; if (Strings.isNotBlank(renamedFileSuffixProvided)) { renamedFileSuffix = renamedFileSuffixProvided; } return new LlapWrappedAppender(name, node, config, renameFileOnClose, renamedFileSuffix); }
@PluginAttribute("advertise") final String advertise, @PluginAttribute("advertiseURI") final String advertiseURI, @PluginConfiguration final Configuration config) {
@PluginAttribute("fileIndex") final String fileIndex, @PluginAttribute("compressionLevel") final String compressionLevelStr, @PluginConfiguration final Configuration config) { final boolean useMax = fileIndex == null ? true : fileIndex.equalsIgnoreCase("max"); int minIndex = MIN_WINDOW_SIZE;
public static class Builder implements org.apache.logging.log4j.core.util.Builder<JsonPatternLayout> { @PluginBuilderAttribute private Charset charset = Charset.defaultCharset(); @PluginConfiguration private Configuration configuration = null; private Builder() { } public Builder withCharset(final Charset charset) { if (charset != null) { this.charset = charset; } return this; } public Builder withConfiguration(final Configuration configuration) { this.configuration = configuration; return this; } @Override public JsonPatternLayout build() { return new JsonPatternLayout(configuration, charset); } }
/** * The factory method to create the PropertiesRewritePolicy. * @param config The Configuration. * @param props key/value pairs for the new keys and values. * @return The PropertiesRewritePolicy. */ @PluginFactory public static PropertiesRewritePolicy createPolicy(@PluginConfiguration final Configuration config, @PluginElement("Properties") final Property[] props) { if (props == null || props.length == 0) { LOGGER.error("Properties must be specified for the PropertiesRewritePolicy"); return null; } final List<Property> properties = Arrays.asList(props); return new PropertiesRewritePolicy(config, properties); } }
public static class Builder implements org.apache.logging.log4j.core.util.Builder<AppenderRefFailoverPolicy> { @PluginElement("AppenderRef") @Required(message = "No appender specified for AppenderRefFailoverPolicy") private AppenderRef appenderRef; @PluginConfiguration private Configuration configuration; @Override public AppenderRefFailoverPolicy build() { return new AppenderRefFailoverPolicy(appenderRef, configuration); } public Builder withAppenderRef(AppenderRef appenderRef) { this.appenderRef = appenderRef; return this; } public Builder withConfiguration(Configuration configuration) { this.configuration = configuration; return this; } }
public static class Builder implements org.apache.logging.log4j.core.util.Builder<AppenderRefFailoverPolicy> { @PluginElement("AppenderRef") @Required(message = "No appender specified for AppenderRefFailoverPolicy") private AppenderRef appenderRef; @PluginConfiguration private Configuration configuration; @Override public AppenderRefFailoverPolicy build() { return new AppenderRefFailoverPolicy(appenderRef, configuration); } public Builder withAppenderRef(AppenderRef appenderRef) { this.appenderRef = appenderRef; return this; } public Builder withConfiguration(Configuration configuration) { this.configuration = configuration; return this; } }
@PluginFactory public static GelfDynamicMdcLogFields createField(@PluginConfiguration final Configuration config, @PluginAttribute("regex") String regex) { if (Strings.isEmpty(regex)) { LOGGER.error("The regex is empty"); return null; } return new GelfDynamicMdcLogFields(regex); } }
@PluginFactory public static GelfDynamicMdcLogFields createField(@PluginConfiguration final Configuration config, @PluginAttribute("regex") String regex) { if (Strings.isEmpty(regex)) { LOGGER.error("The regex is empty"); return null; } return new GelfDynamicMdcLogFields(regex); } }
@PluginFactory public static GelfDynamicMdcLogFields createField(@PluginConfiguration final Configuration config, @PluginAttribute("regex") String regex) { if (Strings.isEmpty(regex)) { LOGGER.error("The regex is empty"); return null; } return new GelfDynamicMdcLogFields(regex); } }
@PluginFactory public static ScriptRef createReference( // @formatter:off @PluginAttribute("ref") final String name, @PluginConfiguration final Configuration configuration) { // @formatter:on if (name == null) { LOGGER.error("No script name provided"); return null; } return new ScriptRef(name, configuration.getScriptManager()); }
@PluginFactory public static JsonPatternLayout createLayout(@PluginAttribute(value = "charset") final Charset charset, @PluginConfiguration final Configuration config) { return new Builder().withCharset(charset).withConfiguration(config).build(); }
/** * Creates the Properties component. * @param properties An array of Property elements. * @param config The Configuration. * @return An Interpolator that includes the configuration properties. */ @PluginFactory public static StrLookup configureSubstitutor(@PluginElement("Properties") final Property[] properties, @PluginConfiguration final Configuration config) { if (properties == null) { return new Interpolator(config.getProperties()); } final Map<String, String> map = new HashMap<>(config.getProperties()); for (final Property prop : properties) { map.put(prop.getName(), prop.getValue()); } return new Interpolator(new MapLookup(map), config.getPluginPackages()); } }
@PluginFactory public static LoggerConfig createLogger( // @formatter:off @PluginAttribute("additivity") final String additivity, @PluginAttribute("level") final Level level, @PluginAttribute("includeLocation") final String includeLocation, @PluginElement("AppenderRef") final AppenderRef[] refs, @PluginElement("Properties") final Property[] properties, @PluginConfiguration final Configuration config, @PluginElement("Filter") final Filter filter) { // @formatter:on final List<AppenderRef> appenderRefs = Arrays.asList(refs); final Level actualLevel = level == null ? Level.ERROR : level; final boolean additive = Booleans.parseBoolean(additivity, true); return new LoggerConfig(LogManager.ROOT_LOGGER_NAME, appenderRefs, filter, actualLevel, additive, properties, config, includeLocation(includeLocation)); } }
@PluginFactory public static GelfLogField createField(@PluginConfiguration final Configuration config, @PluginAttribute("name") String name, @PluginAttribute("literal") String literalValue, @PluginAttribute("mdc") String mdc, @PluginAttribute("pattern") String pattern) { final boolean isPattern = Strings.isNotEmpty(pattern); final boolean isLiteralValue = Strings.isNotEmpty(literalValue); final boolean isMDC = Strings.isNotEmpty(mdc); if (Strings.isEmpty(name)) { LOGGER.error("The name is empty"); return null; } if ((isPattern && isLiteralValue) || (isPattern && isMDC) || (isLiteralValue && isMDC)) { LOGGER.error("The pattern, literal, and mdc attributes are mutually exclusive."); return null; } if (isPattern) { PatternLayout patternLayout = newBuilder().withPattern(pattern).withConfiguration(config) .withNoConsoleNoAnsi(false).withAlwaysWriteExceptions(false).build(); return new GelfLogField(name, null, null, patternLayout); } return new GelfLogField(name, literalValue, mdc, null); } }
@PluginFactory public static GelfLogField createField(@PluginConfiguration final Configuration config, @PluginAttribute("name") String name, @PluginAttribute("literal") String literalValue, @PluginAttribute("mdc") String mdc, @PluginAttribute("pattern") String pattern) { final boolean isPattern = Strings.isNotEmpty(pattern); final boolean isLiteralValue = Strings.isNotEmpty(literalValue); final boolean isMDC = Strings.isNotEmpty(mdc); if (Strings.isEmpty(name)) { LOGGER.error("The name is empty"); return null; } if ((isPattern && isLiteralValue) || (isPattern && isMDC) || (isLiteralValue && isMDC)) { LOGGER.error("The pattern, literal, and mdc attributes are mutually exclusive."); return null; } if (isPattern) { PatternLayout patternLayout = newBuilder().withPattern(pattern).withConfiguration(config) .withNoConsoleNoAnsi(false).withAlwaysWriteExceptions(false).build(); return new GelfLogField(name, null, null, patternLayout); } return new GelfLogField(name, literalValue, mdc, null); } }
@PluginFactory public static AbstractCsvLayout createLayout( // @formatter:off @PluginConfiguration final Configuration config, @PluginAttribute(value = "format", defaultString = DEFAULT_FORMAT) final String format, @PluginAttribute("delimiter") final Character delimiter, @PluginAttribute("escape") final Character escape, @PluginAttribute("quote") final Character quote, @PluginAttribute("quoteMode") final QuoteMode quoteMode, @PluginAttribute("nullString") final String nullString, @PluginAttribute("recordSeparator") final String recordSeparator, @PluginAttribute(value = "charset", defaultString = DEFAULT_CHARSET) final Charset charset, @PluginAttribute("header") final String header, @PluginAttribute("footer") final String footer) // @formatter:on { final CSVFormat csvFormat = createFormat(format, delimiter, escape, quote, quoteMode, nullString, recordSeparator); return new CsvParameterLayout(config, charset, csvFormat, header, footer); }
@PluginFactory public static CsvLogEventLayout createLayout( // @formatter:off @PluginConfiguration final Configuration config, @PluginAttribute(value = "format", defaultString = DEFAULT_FORMAT) final String format, @PluginAttribute("delimiter") final Character delimiter, @PluginAttribute("escape") final Character escape, @PluginAttribute("quote") final Character quote, @PluginAttribute("quoteMode") final QuoteMode quoteMode, @PluginAttribute("nullString") final String nullString, @PluginAttribute("recordSeparator") final String recordSeparator, @PluginAttribute(value = "charset", defaultString = DEFAULT_CHARSET) final Charset charset, @PluginAttribute("header") final String header, @PluginAttribute("footer") final String footer) // @formatter:on { final CSVFormat csvFormat = createFormat(format, delimiter, escape, quote, quoteMode, nullString, recordSeparator); return new CsvLogEventLayout(config, charset, csvFormat, header, footer); }
@PluginFactory public static PerNodeRollingRandomAccessFileAppender createAppender( @PluginAttribute("fileName") final String fileName, @PluginAttribute("filePattern") final String filePattern, @PluginAttribute("append") final String append, @PluginAttribute("name") final String name, @PluginAttribute("immediateFlush") final String immediateFlush, @PluginAttribute("bufferSizeStr") final String bufferSizeStr, @PluginElement("Policy") final TriggeringPolicy policy, @PluginElement("Strategy") RolloverStrategy strategy, @PluginElement("Layout") Layout<? extends Serializable> layout, @PluginElement("Filter") final Filter filter, @PluginAttribute("ignoreExceptions") final String ignore, @PluginAttribute("advertise") final String advertise, @PluginAttribute("advertiseURI") final String advertiseURI, @PluginConfiguration final Configuration config) { RollingRandomAccessFileAppender appender = RollingRandomAccessFileAppender.createAppender( appendNodeIndex(fileName), appendNodeIndex(filePattern), append, name, immediateFlush, bufferSizeStr, policy, strategy, layout, filter, ignore, advertise, advertiseURI, config); return new PerNodeRollingRandomAccessFileAppender(appender); }