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(); }
@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))); }
AppenderComponentBuilder appenderBuilderInfo = builder.newAppender("fileInfo", "FILE") .addAttribute("fileName", "C:\\client_info.log").addAttribute("append", false).add(builder.newFilter("LevelRangeFilter", Filter.Result.ACCEPT, Filter.Result.DENY) .addAttribute("minLevel", Level.INFO).addAttribute("maxLevel", Level.INFO)); AppenderComponentBuilder appenderBuilderError = builder.newAppender("fileError", "FILE") .addAttribute("fileName", "C:\\client_error.log").addAttribute("append", false).add(builder.newFilter("LevelRangeFilter", Filter.Result.ACCEPT, Filter.Result.DENY) .addAttribute("minLevel", Level.ERROR).addAttribute("maxLevel", Level.ERROR)); appenderBuilderInfo.add(builder.newLayout("PatternLayout").addAttribute("pattern", "%msg%n%throwable")); appenderBuilderError.add(builder.newLayout("PatternLayout").addAttribute("pattern", "%msg%n%throwable")); builder.add(appenderBuilderInfo); builder.add(appenderBuilderError); builder.add(builder.newLogger("TestLogger", Level.INFO) .add(builder.newAppenderRef("fileInfo")) .addAttribute("additivity", false) .add(builder.newAppenderRef("fileError")) .addAttribute("additivity", false));
public static AppenderComponentBuilder newRollingRandomAccessFileAppender(ConfigurationBuilder<BuiltConfiguration> builder, String appenderName, String fileName, String filePattern) { return builder.newAppender(appenderName, "RollingRandomAccessFile") .add(newThresholdFilter(builder)) .addAttribute("fileName", fileName) .addAttribute("filePattern", filePattern) .addAttribute("immediateFlush", "true") .add(newLayoutOnlyContent(builder)) .addComponent(newTriggeringPolicy(builder)); }
builder.setConfigurationName(name); builder.setStatusLevel(Level.INFO); builder.add(builder.newFilter("ThresholdFilter", Filter.Result.ACCEPT, Filter.Result.NEUTRAL). addAttribute("level", Level.INFO)); AppenderComponentBuilder appenderBuilder = builder.newAppender("file", "FILE"). addAttribute("fileName", "log/client_"+Config.CLIENTID+".log"); 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.INFO). add(builder.newAppenderRef("file")). addAttribute("additivity", false)); builder.add(builder.newRootLogger(Level.INFO).add(builder.newAppenderRef("file"))); return builder.build();
final AppenderComponentBuilder appenderBuilder = builder.newAppender("Stdout", "CONSOLE").addAttribute("target", ConsoleAppender.Target.SYSTEM_OUT); appenderBuilder.add(builder.newLayout("PatternLayout"). addComponent(builder.newComponent("ScriptPatternSelector") .addAttribute("defaultPattern", "[%-5level] %c{1.} %C{1.}.%M.%L %msg%n") .addAttribute("pattern", "[%-5level] %c{1.} ====== %C{1.}.%M:%L %msg ======%n")) .addComponent(builder.newComponent("selectorScript", "Script", script).addAttribute("language", "beanshell")))); appenderBuilder.add(builder.newFilter("ScriptFilter", Filter.Result.DENY, Filter.Result.NEUTRAL).addComponent(builder.newComponent("ScriptRef").addAttribute("ref", "filter.groovy"))); builder.add(appenderBuilder);
appenderBuilder.add(builder.newLayout("PatternLayout"). addAttribute("pattern", "%d [%t] %-5level: %msg%n%throwable")); builder.add( appenderBuilder );
appenderBuilder.add(builder.newLayout("PatternLayout"). addAttribute("pattern", "%d [%t] %-5level: %msg%n%throwable")); builder.add( appenderBuilder );
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"); }
ConsoleAppender.Target.SYSTEM_OUT); appenderBuilder .add(builder .newLayout("PatternLayout") .addAttribute("pattern", "%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %myMsg%n"));
componentBuilder.add(builder.newLayout("PatternLayout"). addAttribute("pattern", "${layout}")); builder.add(componentBuilder); .addAttribute("filePattern", "${logging.file.name}-%d{yyyy-MM-dd-HH}") .addAttribute("immediateFlush", "true") .add(layoutBuilder) .addComponent(triggeringPolicy); builder.add(componentBuilder); componentBuilder = builder.newAppender("RollingWarn", "RollingRandomAccessFile") .add(builder.newFilter("ThresholdFilter", Filter.Result.ACCEPT, Filter.Result.DENY) .addAttribute("level", Level.WARN)) .addAttribute("fileName", "${logging.file.warn.name}") .addAttribute("filePattern", "${logging.file.warn.name}-%d{yyyy-MM-dd-HH}") .addAttribute("immediateFlush", "true") .add(layoutBuilder) .addComponent(triggeringPolicy); builder.add(componentBuilder); componentBuilder = builder.newAppender("RollingError", "RollingRandomAccessFile") .add(builder.newFilter("ThresholdFilter", Filter.Result.ACCEPT, Filter.Result.DENY) .addAttribute("level", Level.ERROR)) .addAttribute("fileName", "${logging.file.error.name}") .addAttribute("filePattern", "${logging.file.error.name}-%d{yyyy-MM-dd-HH}") .addAttribute("immediateFlush", "true") .add(layoutBuilder) .addComponent(triggeringPolicy); builder.add(componentBuilder); componentBuilder = builder.newAppender("RollingMonitor", "RollingRandomAccessFile") .add(builder.newFilter("ThresholdFilter", Filter.Result.ACCEPT, Filter.Result.NEUTRAL)
private AppenderComponentBuilder createAppender(final String key, final Properties properties) { final String name = (String) properties.remove(CONFIG_NAME); if (Strings.isEmpty(name)) { throw new ConfigurationException("No name attribute provided for Appender " + key); } final String type = (String) properties.remove(CONFIG_TYPE); if (Strings.isEmpty(type)) { throw new ConfigurationException("No type attribute provided for Appender " + key); } final AppenderComponentBuilder appenderBuilder = builder.newAppender(name, type); addFiltersToComponent(appenderBuilder, properties); final Properties layoutProps = PropertiesUtil.extractSubset(properties, "layout"); if (layoutProps.size() > 0) { appenderBuilder.add(createLayout(name, layoutProps)); } return processRemainingProperties(appenderBuilder, properties); }
AppenderComponentBuilder defaultRoll = builder.newAppender("default", "RollingFile").addAttribute("fileName", new File(logDir, "cc.log")) .addAttribute("filePattern", new File(logDir, "cc-%d{MM-dd-yy}.log.gz")).add(defaultLayout) .addComponent(triggeringPolicy); builder.add(defaultRoll); AppenderComponentBuilder accessRoll = builder.newAppender("access", "RollingFile").addAttribute("fileName", new File(logDir, "access.log")) .addAttribute("filePattern", new File(logDir, "access-%d{MM-dd-yy}.log.gz")).add(accessLayout) .addComponent(triggeringPolicy); builder.add(accessRoll); AppenderComponentBuilder traceRoll = builder.newAppender("trace", "RollingFile").addAttribute("fileName", logDir + "trace-cc.log") .addAttribute("filePattern", logDir + "trace-cc-%d{MM-dd-yy-ss}.log.gz").add(traceLayout) .addComponent(triggeringPolicy); builder.add(traceRoll);
appenderBuilder.add(newPatternLayout(pattern)); break; appenderBuilder.add(newPatternLayout("%level - %m%n")); break; appenderBuilder.add(newPatternLayout(pattern)); break; htmlLayout.addAttribute("locationInfo", Boolean.parseBoolean(getLog4jAppenderValue(name, "layout.LocationInfo", FALSE))); appenderBuilder.add(htmlLayout); break; xmlLayout.addAttribute("properties", Boolean.parseBoolean(getLog4jAppenderValue(name, "layout.Properties", FALSE))); appenderBuilder.add(xmlLayout); break;
.addAttribute("filePattern", FileUtil.joinPath(logDir, "nc-" + nodeId + "-%d{MM-dd-yy-ss}.log.gz")) .add(defaultLayout).addComponent(triggeringPolicy); builder.add(defaultRoll); .addAttribute("filePattern", 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)) AppenderComponentBuilder traceRoll = builder.newAppender("trace", "RollingFile") .addAttribute("fileName", logDir + "trace-" + nodeId + ".log") .addAttribute("filePattern", logDir + "trace-" + nodeId + "-%d{MM-dd-yy-ss}.log.gz").add(traceLayout) .addComponent(triggeringPolicy); builder.add(traceRoll);