/** * Validates that the code pattern we use to add an appender on the fly * works with a basic appender that is not the new OutputStream appender or * new Writer appender. */ @Test public void testUpdatePatternWithFileAppender() { final LoggerContext ctx = (LoggerContext) LogManager.getContext(false); final Configuration config = ctx.getConfiguration(); // @formatter:off final Appender appender = FileAppender.newBuilder() .withFileName("target/" + getClass().getName() + ".log") .withAppend(false) .withName("File") .withIgnoreExceptions(false) .withBufferedIo(false) .withBufferSize(4000) .setConfiguration(config) .build(); // @formatter:on appender.start(); config.addAppender(appender); ConfigurationTestUtils.updateLoggers(appender, config); LogManager.getLogger().error("FOO MSG"); } }
.withBufferedIo(Booleans.parseBoolean(bufferedIo, true)) .withBufferSize(Integers.parseInt(bufferSizeStr, DEFAULT_BUFFER_SIZE)) .setConfiguration(config) .withFileName(fileName) .withFilter(filter)
public static void createFileAppender(String logDir, String logFile) { logDir = logDir + SystemProperties.fileSeparator + logFile; final LoggerContext context = (LoggerContext) LogManager.getContext(false); final Configuration config = context.getConfiguration(); /*Layout layout = PatternLayout.createLayout("%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n", null, config, null, null,true, true, null, null );*/ Layout layout = PatternLayout.newBuilder() .withConfiguration(config) .withPattern("%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n") .build(); FileAppender.Builder builder = FileAppender.newBuilder(); builder.setConfiguration(config); builder.withFileName(logDir); builder.withAppend(false); builder.withLocking(false); builder.withName("File"); builder.withIgnoreExceptions(false); builder.withImmediateFlush(true); builder.withBufferedIo(false); builder.withBufferSize(0); builder.withLayout(layout); builder.withAdvertise(false); Appender appender = builder.build(); appender.start(); config.addAppender(appender); AppenderRef.createAppenderRef("File", null, null); config.getRootLogger().addAppender(appender, Level.DEBUG, null); context.updateLoggers(); }