private void addTestFixtures(final String name, final ConfigurationBuilder<BuiltConfiguration> builder) { builder.setConfigurationName(name); builder.setStatusLevel(Level.ERROR); builder.setShutdownTimeout(5000, TimeUnit.MILLISECONDS); builder.add(builder.newScriptFile("target/test-classes/scripts/filter.groovy").addIsWatched(true)); builder.add(builder.newFilter("ThresholdFilter", Filter.Result.ACCEPT, Filter.Result.NEUTRAL) .addAttribute("level", Level.DEBUG)); final AppenderComponentBuilder appenderBuilder = builder.newAppender("Stdout", "CONSOLE").addAttribute("target", ConsoleAppender.Target.SYSTEM_OUT); appenderBuilder.add(builder.newLayout("PatternLayout"). addAttribute("pattern", "%d [%t] %-5level: %msg%n%throwable")); appenderBuilder.add(builder.newFilter("MarkerFilter", Filter.Result.DENY, Filter.Result.NEUTRAL).addAttribute("marker", "FLOW")); builder.add(appenderBuilder); final AppenderComponentBuilder appenderBuilder2 = builder.newAppender("Kafka", "Kafka").addAttribute("topic", "my-topic"); appenderBuilder2.addComponent(builder.newProperty("bootstrap.servers", "localhost:9092")); appenderBuilder2.add(builder.newLayout("GelfLayout"). addAttribute("host", "my-host"). addComponent(builder.newKeyValuePair("extraField", "extraValue"))); builder.add(appenderBuilder2); builder.add(builder.newLogger("org.apache.logging.log4j", Level.DEBUG, true). add(builder.newAppenderRef("Stdout")). addAttribute("additivity", false)); builder.add(builder.newLogger("org.apache.logging.log4j.core"). add(builder.newAppenderRef("Stdout"))); builder.add(builder.newRootLogger(Level.ERROR).add(builder.newAppenderRef("Stdout"))); builder.addProperty("MyKey", "MyValue"); builder.add(builder.newCustomLevel("Panic", 17)); builder.setPackages("foo,bar"); }
static Configuration addTestFixtures(final String name, final ConfigurationBuilder<BuiltConfiguration> builder) { builder.setConfigurationName(name); builder.setStatusLevel(Level.ERROR); builder.add(builder.newScriptFile("target/test-classes/scripts/filter.groovy").addIsWatched(true)); builder.add(builder.newFilter("ThresholdFilter", Filter.Result.ACCEPT, Filter.Result.NEUTRAL) .addAttribute("level", Level.DEBUG)); final AppenderComponentBuilder appenderBuilder = builder.newAppender("Stdout", "CONSOLE").addAttribute("target", ConsoleAppender.Target.SYSTEM_OUT); appenderBuilder.add(builder.newLayout("PatternLayout"). addAttribute("pattern", "%d [%t] %-5level: %msg%n%throwable")); appenderBuilder.add(builder.newFilter("MarkerFilter", Filter.Result.DENY, Filter.Result.NEUTRAL).addAttribute("marker", "FLOW")); builder.add(appenderBuilder); final AppenderComponentBuilder appenderBuilder2 = builder.newAppender("Kafka", "Kafka").addAttribute("topic", "my-topic"); appenderBuilder2.addComponent(builder.newProperty("bootstrap.servers", "localhost:9092")); appenderBuilder2.add(builder.newLayout("GelfLayout"). addAttribute("host", "my-host"). addComponent(builder.newKeyValuePair("extraField", "extraValue"))); builder.add(appenderBuilder2); builder.add(builder.newLogger("org.apache.logging.log4j", Level.DEBUG, true). add(builder.newAppenderRef("Stdout")). addAttribute("additivity", false)); builder.add(builder.newRootLogger(Level.ERROR).add(builder.newAppenderRef("Stdout"))); builder.add(builder.newCustomLevel("Panic", 17)); return builder.build(); }
builder.add(createScript(scriptProps)); } else { builder.add(createScriptFile(scriptProps)); if (levelProps.size() > 0) { for (final String key : levelProps.stringPropertyNames()) { builder.add(builder.newCustomLevel(key, Integer.parseInt(levelProps.getProperty(key)))); for (final String filterName : filterNames) { final String name = filterName.trim(); builder.add(createFilter(name, PropertiesUtil.extractSubset(rootProperties, "filter." + name))); .partitionOnCommonPrefixes(PropertiesUtil.extractSubset(rootProperties, "filter")); for (final Map.Entry<String, Properties> entry : filters.entrySet()) { builder.add(createFilter(entry.getKey().trim(), entry.getValue())); for (final String appenderName : appenderNames) { final String name = appenderName.trim(); builder.add(createAppender(appenderName.trim(), PropertiesUtil.extractSubset(rootProperties, "appender." + name))); .partitionOnCommonPrefixes(PropertiesUtil.extractSubset(rootProperties, Appender.ELEMENT_TYPE)); for (final Map.Entry<String, Properties> entry : appenders.entrySet()) { builder.add(createAppender(entry.getKey().trim(), entry.getValue())); final String name = loggerName.trim(); if (!name.equals(LoggerConfig.ROOT)) { builder.add(createLogger(name, PropertiesUtil.extractSubset(rootProperties, "logger." + name)));
private ConfigurationBuilder<BuiltConfiguration> buildConfigurationBuilder(final String filePattern) { final ConfigurationBuilder<BuiltConfiguration> builder = ConfigurationBuilderFactory.newConfigurationBuilder(); builder.setConfigurationName("LOG4J2-1964 demo"); builder.setStatusLevel(Level.ERROR); // @formatter:off builder.add(builder.newAppender("consoleLog", "Console") .addAttribute("target", ConsoleAppender.Target.SYSTEM_ERR)); builder.add(builder.newAppender("fooAppender", "RollingFile") .addAttribute("fileName", "target/rolling-update-date/foo.log") .addAttribute("filePattern", filePattern) .addComponent(builder.newComponent("SizeBasedTriggeringPolicy") .addAttribute("size", "10MB"))); builder.add(builder.newRootLogger(Level.INFO) .add(builder.newAppenderRef("consoleLog")) .add(builder.newAppenderRef("fooAppender"))); // @formatter:on return builder; }
@Override public Configuration createCustomConfiguration(final String name, ConfigurationBuilder<BuiltConfiguration> builder) { super.createCustomConfiguration(name, builder); /* Properties */ builder.addProperty("logging.file.action.name", "${sys:logging.file.path}/../bigdata/${sys:project.name}-action.log"); /* Appender */ AppenderComponentBuilder componentBuilder = Log4j2Utils.newRollingRandomAccessFileAppender(builder, "RollingAction", "${logging.file.action.name}", "${logging.file.action.name}-%d{yyyy-MM-dd-HH}"); builder.add(componentBuilder); /* Logger */ LoggerComponentBuilder loggerWithRef = Log4j2Utils.newLoggerWithRef(builder, "com.rhwayfun.springboot.logging.log4j2.config.BigdataUtilImpl", "RollingAction"); builder.add(loggerWithRef); LoggerComponentBuilder logger = Log4j2Utils.newLogger(builder, "com.alibaba.dubbo.monitor", Level.WARN); builder.add(logger); return builder.build(); } }
@Test public void testBuilder() throws Exception { final ConfigurationBuilder<BuiltConfiguration> builder = ConfigurationBuilderFactory.newConfigurationBuilder(); builder.setStatusLevel(Level.ERROR); builder.setConfigurationName("BuilderTest"); builder.add(builder.newFilter("ThresholdFilter", Filter.Result.ACCEPT, Filter.Result.NEUTRAL) .addAttribute("level", Level.DEBUG)); final AppenderComponentBuilder appenderBuilder = builder.newAppender("Stdout", "CONSOLE").addAttribute("target", ConsoleAppender.Target.SYSTEM_OUT); appenderBuilder.add(builder.newLayout("PatternLayout"). addAttribute("pattern", "%d [%t] %-5level: %msg%n%throwable")); appenderBuilder.add(builder.newFilter("MarkerFilter", Filter.Result.DENY, Filter.Result.NEUTRAL).addAttribute("marker", "FLOW")); builder.add(appenderBuilder); builder.add(builder.newLogger("org.apache.logging.log4j", Level.DEBUG). add(builder.newAppenderRef("Stdout")). addAttribute("additivity", false)); builder.add(builder.newRootLogger(Level.ERROR).add(builder.newAppenderRef("Stdout"))); ctx = Configurator.initialize(builder.build()); final Configuration config = ctx.getConfiguration(); assertNotNull("No configuration", config); assertEquals("Unexpected Configuration", "BuilderTest", config.getName()); assertThat(config.getAppenders(), hasSize(equalTo(1))); }
componentBuilder.add(builder.newLayout("PatternLayout"). addAttribute("pattern", "${layout}")); builder.add(componentBuilder); .add(layoutBuilder) .addComponent(triggeringPolicy); builder.add(componentBuilder); componentBuilder = builder.newAppender("RollingWarn", "RollingRandomAccessFile") .add(builder.newFilter("ThresholdFilter", Filter.Result.ACCEPT, Filter.Result.DENY) .add(layoutBuilder) .addComponent(triggeringPolicy); builder.add(componentBuilder); componentBuilder = builder.newAppender("RollingError", "RollingRandomAccessFile") .add(builder.newFilter("ThresholdFilter", Filter.Result.ACCEPT, Filter.Result.DENY) .add(layoutBuilder) .addComponent(triggeringPolicy); builder.add(componentBuilder); componentBuilder = builder.newAppender("RollingMonitor", "RollingRandomAccessFile") .add(builder.newFilter("ThresholdFilter", Filter.Result.ACCEPT, Filter.Result.NEUTRAL) .add(builder.newLayout("PatternLayout").addAttribute("pattern", "%m%n")) .addComponent(triggeringPolicy); builder.add(componentBuilder); componentBuilder = builder.newAppender("RollingRiderMq", "RollingRandomAccessFile") .add(builder.newFilter("ThresholdFilter", Filter.Result.ACCEPT, Filter.Result.NEUTRAL) .add(layoutBuilder)
appenderBuilder.add(builder.newLayout("PatternLayout"). addAttribute("pattern", "%d [%t] %-5level: %msg%n%throwable")); builder.add( appenderBuilder ); .addAttribute("fileName", "target/rolling.log") .addAttribute("filePattern", "target/archive/rolling-%d{MM-dd-yy}.log.gz") .add(layoutBuilder) .addComponent(triggeringPolicy); builder.add(appenderBuilder); .add( builder.newAppenderRef( "rolling" ) ) .addAttribute( "additivity", false ) ); .add( builder.newAppenderRef( "rolling" ) ) ); final Configuration config = builder.build(); config.initialize();
builder.setStatusLevel(Level.ERROR); builder.setConfigurationName("BuilderTest"); builder.add(builder.newScriptFile("filter.groovy", "target/test-classes/scripts/filter.groovy").addIsWatched(true)); final AppenderComponentBuilder appenderBuilder = builder.newAppender("Stdout", "CONSOLE").addAttribute("target", ConsoleAppender.Target.SYSTEM_OUT); appenderBuilder.add(builder.newFilter("ScriptFilter", Filter.Result.DENY, Filter.Result.NEUTRAL).addComponent(builder.newComponent("ScriptRef").addAttribute("ref", "filter.groovy"))); builder.add(appenderBuilder); builder.add(builder.newLogger("org.apache.logging.log4j", Level.DEBUG). add(builder.newAppenderRef("Stdout")). addAttribute("additivity", false)); builder.add(builder.newRootLogger(Level.ERROR).add(builder.newAppenderRef("Stdout"))); ctx = Configurator.initialize(builder.build()); final Configuration config = ctx.getConfiguration();
private void buildNullAppender(final String appenderName) { final AppenderComponentBuilder appenderBuilder = builder.newAppender(appenderName, NullAppender.PLUGIN_NAME); builder.add(appenderBuilder); }
private void buildFileAppender(final String appenderName) { final AppenderComponentBuilder appenderBuilder = builder.newAppender(appenderName, FileAppender.PLUGIN_NAME); buildFileAppender(appenderName, appenderBuilder); builder.add(appenderBuilder); }
builder.add(newLogger);
private void buildRootLogger(final String rootLoggerValue) { if (rootLoggerValue == null) { return; } final String[] rootLoggerParts = rootLoggerValue.split(COMMA_DELIMITED_RE); final String rootLoggerLevel = getLevelString(rootLoggerParts, Level.ERROR.name()); final RootLoggerComponentBuilder loggerBuilder = builder.newRootLogger(rootLoggerLevel); // final String[] sortedAppenderNames = Arrays.copyOfRange(rootLoggerParts, 1, rootLoggerParts.length); Arrays.sort(sortedAppenderNames); for (final String appender : sortedAppenderNames) { loggerBuilder.add(builder.newAppenderRef(appender)); } builder.add(loggerBuilder); }
public static void intializeLoggers() { ConfigurationBuilder<BuiltConfiguration> builder = ConfigurationBuilderFactory.newConfigurationBuilder(); builder.setConfigurationName("logger"); RootLoggerComponentBuilder rootLogger = builder.newRootLogger(Level.DEBUG); builder.add(rootLogger); Configurator.initialize(builder.build()); }
private void buildConsoleAppender(final String appenderName) { final AppenderComponentBuilder appenderBuilder = builder.newAppender(appenderName, ConsoleAppender.PLUGIN_NAME); final String targetValue = getLog4jAppenderValue(appenderName, "Target", "System.out"); if (targetValue != null) { final ConsoleAppender.Target target; switch (targetValue) { case "System.out": target = ConsoleAppender.Target.SYSTEM_OUT; break; case "System.err": target = ConsoleAppender.Target.SYSTEM_ERR; break; default: reportWarning("Unknown value for console Target: " + targetValue); target = null; } if (target != null) { appenderBuilder.addAttribute("target", target); } } buildAttribute(appenderName, appenderBuilder, "Follow", "follow"); if (FALSE.equalsIgnoreCase(getLog4jAppenderValue(appenderName, "ImmediateFlush"))) { reportWarning("ImmediateFlush=false is not supported on Console appender"); } buildAppenderLayout(appenderName, appenderBuilder); builder.add(appenderBuilder); }
.addAttribute("filePattern", new File(logDir, "cc-%d{MM-dd-yy}.log.gz")).add(defaultLayout) .addComponent(triggeringPolicy); builder.add(defaultRoll); builder.add(builder.newRootLogger(Level.INFO).add(builder.newAppenderRef("default"))); .addAttribute("filePattern", new File(logDir, "access-%d{MM-dd-yy}.log.gz")).add(accessLayout) .addComponent(triggeringPolicy); builder.add(accessRoll); builder.add(builder.newLogger("org.apache.hyracks.http.server.CLFLogger", Level.forName("ACCESS", 550)) .add(builder.newAppenderRef("access")).addAttribute("additivity", false)); .addAttribute("filePattern", logDir + "trace-cc-%d{MM-dd-yy-ss}.log.gz").add(traceLayout) .addComponent(triggeringPolicy); builder.add(traceRoll); builder.add(builder.newLogger("org.apache.hyracks.util.trace.Tracer.Traces", Level.forName("TRACER", 570)) .add(builder.newAppenderRef("trace")).addAttribute("additivity", false)); return builder.build();
private void buildDailyRollingFileAppender(final String appenderName) { final AppenderComponentBuilder appenderBuilder = builder.newAppender(appenderName, RollingFileAppender.PLUGIN_NAME); buildFileAppender(appenderName, appenderBuilder); final String fileName = getLog4jAppenderValue(appenderName, "File"); final String datePattern = getLog4jAppenderValue(appenderName, "DatePattern", fileName + "'.'yyyy-MM-dd"); appenderBuilder.addAttribute("filePattern", fileName + "%d{" + datePattern + "}"); final ComponentBuilder<?> triggeringPolicy = builder.newComponent("Policies") .addComponent(builder.newComponent("TimeBasedTriggeringPolicy").addAttribute("modulate", true)); appenderBuilder.addComponent(triggeringPolicy); appenderBuilder .addComponent(builder.newComponent("DefaultRolloverStrategy").addAttribute("max", Integer.MAX_VALUE)); builder.add(appenderBuilder); }
FileUtil.joinPath(logDir, "nc-" + nodeId + "-%d{MM-dd-yy-ss}.log.gz")) .add(defaultLayout).addComponent(triggeringPolicy); builder.add(defaultRoll); builder.add(builder.newRootLogger(Level.INFO).add(builder.newAppenderRef("default"))); FileUtil.joinPath(logDir, "access-" + nodeId + "-%d{MM-dd-yy-ss}.log.gz")) .add(accessLayout).addComponent(triggeringPolicy); builder.add(accessRoll); builder.add(builder.newLogger("org.apache.hyracks.http.server.CLFLogger", Level.forName("ACCESS", 550)) .add(builder.newAppenderRef("access")).addAttribute("additivity", false)); .addAttribute("filePattern", logDir + "trace-" + nodeId + "-%d{MM-dd-yy-ss}.log.gz").add(traceLayout) .addComponent(triggeringPolicy); builder.add(traceRoll); builder.add(builder.newLogger("org.apache.hyracks.util.trace.Tracer.Traces", Level.forName("TRACER", 570)) .add(builder.newAppenderRef("trace")).addAttribute("additivity", false));
private void buildRollingFileAppender(final String appenderName) { final AppenderComponentBuilder appenderBuilder = builder.newAppender(appenderName, RollingFileAppender.PLUGIN_NAME); buildFileAppender(appenderName, appenderBuilder); final String fileName = getLog4jAppenderValue(appenderName, "File"); appenderBuilder.addAttribute("filePattern", fileName + ".%i"); final String maxFileSizeString = getLog4jAppenderValue(appenderName, "MaxFileSize", "10485760"); final String maxBackupIndexString = getLog4jAppenderValue(appenderName, "MaxBackupIndex", "1"); final ComponentBuilder<?> triggeringPolicy = builder.newComponent("Policies").addComponent( builder.newComponent("SizeBasedTriggeringPolicy").addAttribute("size", maxFileSizeString)); appenderBuilder.addComponent(triggeringPolicy); appenderBuilder.addComponent( builder.newComponent("DefaultRolloverStrategy").addAttribute("max", maxBackupIndexString)); builder.add(appenderBuilder); }