} else if (a instanceof OutputStreamAppender) { OutputStreamAppender oa = (OutputStreamAppender)a; Encoder e = oa.getEncoder(); Layout l = null; if (e instanceof PatternLayoutEncoder) {
@Override public String getEncoding() { if (getTarget() instanceof OutputStreamAppender) { OutputStreamAppender<?> appender = (OutputStreamAppender<?>) getTarget(); Encoder<?> encoder = appender.getEncoder(); if (encoder instanceof LayoutWrappingEncoder) { LayoutWrappingEncoder<?> base = (LayoutWrappingEncoder<?>) encoder; if (base.getCharset() != null) { return base.getCharset().name(); } return null; } } return null; }
@Override public String getEncoding() { if (getTarget() instanceof OutputStreamAppender) { OutputStreamAppender<?> appender = (OutputStreamAppender<?>) getTarget(); Encoder<?> encoder = appender.getEncoder(); if (encoder instanceof LayoutWrappingEncoder) { LayoutWrappingEncoder<?> base = (LayoutWrappingEncoder<?>) encoder; if (base.getCharset() != null) { return base.getCharset().name(); } return null; } } return null; }
@Override protected void configure() { // We inject what we can in the audit appender if it exists LayoutWrappingEncoder<?> layoutEncoder = null; Logger logger = LoggerFactory.getLogger(AUDIT_LOGGER); if (logger instanceof ch.qos.logback.classic.Logger) { ch.qos.logback.classic.Logger logbackLogger = (ch.qos.logback.classic.Logger) logger; Appender<ILoggingEvent> appender = logbackLogger.getAppender(AUDIT_APPENDER); if (appender instanceof OutputStreamAppender) { OutputStreamAppender<?> app = (OutputStreamAppender<?>) appender; Encoder<?> encoder = app.getEncoder(); if (encoder instanceof LayoutWrappingEncoder) { layoutEncoder = (LayoutWrappingEncoder<?>) encoder; } } } if (layoutEncoder != null && layoutEncoder.getLayout() instanceof AuditLogbackLayout) { requestInjection(layoutEncoder.getLayout()); } else { // We warn that a logback writer is wanted but none is found LOGGER.info( "Audit uses logback but no appender/logger found. Make sure an appender is named {}, has a LayoutWrappingEncoder with an AuditLogbackLayout, and that a logger named {} is defined with this appender.", AUDIT_APPENDER, AUDIT_LOGGER); } }
} else if (a instanceof OutputStreamAppender) { OutputStreamAppender oa = (OutputStreamAppender) a; Encoder e = oa.getEncoder(); Layout l = null; if (e instanceof PatternLayoutEncoder) {
} else if (a instanceof OutputStreamAppender) { OutputStreamAppender oa = (OutputStreamAppender)a; Encoder e = oa.getEncoder(); Layout l = null; if (e instanceof PatternLayoutEncoder) {
@Override protected void configure() { // We inject what we can in the audit appender if it exists LayoutWrappingEncoder<?> layoutEncoder = null; Logger logger = LoggerFactory.getLogger(AUDIT_LOGGER); if (logger instanceof ch.qos.logback.classic.Logger) { ch.qos.logback.classic.Logger logbackLogger = (ch.qos.logback.classic.Logger) logger; Appender<ILoggingEvent> appender = logbackLogger.getAppender(AUDIT_APPENDER); if (appender instanceof OutputStreamAppender) { OutputStreamAppender<?> app = (OutputStreamAppender<?>) appender; Encoder<?> encoder = app.getEncoder(); if (encoder instanceof LayoutWrappingEncoder) { layoutEncoder = (LayoutWrappingEncoder<?>) encoder; } } } if (layoutEncoder != null && layoutEncoder.getLayout() instanceof AuditLogbackLayout) { requestInjection(layoutEncoder.getLayout()); } else { // We warn that a logback writer is wanted but none is found LOGGER.info( "Audit uses logback but no appender/logger found. Make sure an appender is named {}, has a LayoutWrappingEncoder with an AuditLogbackLayout, and that a logger named {} is defined with this appender.", AUDIT_APPENDER, AUDIT_LOGGER); } }
} else if (a instanceof OutputStreamAppender) { OutputStreamAppender oa = (OutputStreamAppender) a; Encoder e = oa.getEncoder(); Layout l = null; if (e instanceof PatternLayoutEncoder) {
@Test public void test() { BaleenLogging logging = new BaleenLogging(); InMemoryLoggingBuilder builder = new InMemoryLoggingBuilder(); logging.configure( Arrays.asList( builder, new BaleenConsoleLoggerBuilder(PATTERN, new MinMaxFilter(Level.INFO, Level.ERROR)))); LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory(); Logger rootLogger = context.getLogger(ch.qos.logback.classic.Logger.ROOT_LOGGER_NAME); int count = 0; Iterator<Appender<ILoggingEvent>> it = rootLogger.iteratorForAppenders(); while (it.hasNext()) { Appender<ILoggingEvent> appender = it.next(); if (appender instanceof OutputStreamAppender) { Encoder<ILoggingEvent> e = ((OutputStreamAppender<ILoggingEvent>) appender).getEncoder(); assertTrue(e instanceof PatternLayoutEncoder); assertEquals(PATTERN, ((PatternLayoutEncoder) e).getPattern()); } count++; } // 3 = 2 + instrumented appender assertEquals(3, count); }
if (appender instanceof OutputStreamAppender) { Encoder<ILoggingEvent> e = ((OutputStreamAppender<ILoggingEvent>) appender).getEncoder(); assertTrue(e instanceof PatternLayoutEncoder); assertEquals(PATTERN, ((PatternLayoutEncoder) e).getPattern());