Appender<ILoggingEvent> createSwiftingAppender(final String discriminationKey, final Context context) { final AppenderFactory<ILoggingEvent> appenderFactory = (subContext, discriminatingValue) -> createFileAppender( String.format("%s-%s", logFileBaseName, discriminatingValue), subContext); final SiftingAppender siftingAppender = new SiftingAppender(); siftingAppender.setContext(context); siftingAppender.setDiscriminator(getMdcBasedDiscriminator(discriminationKey)); siftingAppender.setAppenderFactory(appenderFactory); siftingAppender.start(); return siftingAppender; }
SiftingAppender siftAppender = new SiftingAppender(); AppenderFactory<ILoggingEvent> appenderFactory = new AppenderFactory<ILoggingEvent>() { @Override public Appender<ILoggingEvent> buildAppender(Context context, String discriminatingValue) throws JoranException { /* Create your file appender here, with what ever options you need */ PatternLayoutEncoder ple = new PatternLayoutEncoder(); ple.setPattern("%date %level [%thread] %logger{10} [%file:%line] %msg%n"); ple.setContext(context); ple.start(); FileAppender<ILoggingEvent> fileAppender = new FileAppender<ILoggingEvent>(); fileAppender.setFile(file); fileAppender.setEncoder(ple); fileAppender.setContext(context); fileAppender.start(); return fileAppender; } }; /* set your factory to the sifting appender */ siftAppender.setAppenderFactory(appenderFactory ); siftAppender.setContext(context); siftAppender.setName("TMP"); siftAppender.start(); logger.addAppender(siftAppender); logger.setAdditive(true);
@Ignore @Test public void programmicSiftingAppender() { SiftingAppender connectorAppender = new SiftingAppender(); connectorAppender.setContext(loggerContext); connectorAppender.setName("SIFTING_APPENDER");