public synchronized void addAppender(Appender<ILoggingEvent> newAppender) { if (aai == null) { aai = new AppenderAttachableImpl<ILoggingEvent>(); } aai.addAppender(newAppender); }
/** * Remove all previously added appenders from this logger instance. * <p/> * This is useful when re-reading configuration information. */ public void detachAndStopAllAppenders() { if (aai != null) { aai.detachAndStopAllAppenders(); } }
/** * Remove the appender passed as parameter form the list of appenders. */ public boolean detachAppender(Appender<ILoggingEvent> appender) { if (aai == null) { return false; } return aai.detachAppender(appender); }
@Test public void testDetachAppender() throws Exception { NOPAppender<TestEvent> ta = new NOPAppender<TestEvent>(); ta.start(); aai.addAppender(ta); NOPAppender<TestEvent> tab = new NOPAppender<TestEvent>(); tab.setName("test"); tab.start(); aai.addAppender(tab); assertTrue("Appender not detached", aai.detachAppender(tab)); assertNull("Appender was not removed", aai.getAppender("test")); assertFalse("Appender detach error", aai.detachAppender(tab)); }
@SuppressWarnings("unchecked") public Iterator<Appender<ILoggingEvent>> iteratorForAppenders() { if (aai == null) { return Collections.EMPTY_LIST.iterator(); } return aai.iteratorForAppenders(); }
public Appender<ILoggingEvent> getAppender(String name) { if (aai == null) { return null; } return aai.getAppender(name); }
public boolean isAttached(Appender<ILoggingEvent> appender) { if (aai == null) { return false; } return aai.isAttached(appender); }
@Test public void testIsAttached() throws Exception { NOPAppender<TestEvent> ta = new NOPAppender<TestEvent>(); ta.start(); aai.addAppender(ta); NOPAppender<TestEvent> tab = new NOPAppender<TestEvent>(); tab.setName("test"); tab.start(); aai.addAppender(tab); assertTrue("Appender is not attached", aai.isAttached(ta)); assertTrue("Appender is not attached", aai.isAttached(tab)); }
@Override public void addAppender(Appender<ILoggingEvent> newAppender) { aai.addAppender(newAppender); }
private int appendLoopOnAppenders(ILoggingEvent event) { if (aai != null) { return aai.appendLoopOnAppenders(event); } else { return 0; } }
@Test public void testAddAppender() throws Exception { TestEvent event = new TestEvent(); NOPAppender<TestEvent> ta = new NOPAppender<TestEvent>(); ta.start(); aai.addAppender(ta); ta = new NOPAppender<TestEvent>(); ta.setName("test"); ta.start(); aai.addAppender(ta); int size = aai.appendLoopOnAppenders(event); assertTrue("Incorrect number of appenders", size == 2); }
@Before public void setUp() throws Exception { aai = new AppenderAttachableImpl<TestEvent>(); }
@Override public Iterator<Appender<ILoggingEvent>> iteratorForAppenders() { return aai.iteratorForAppenders(); }
@Override public Appender<ILoggingEvent> getAppender(String name) { return aai.getAppender(name); }
@Override public boolean isAttached(Appender<ILoggingEvent> appender) { return aai.isAttached(appender); }
public void addAppender(Appender<E> newAppender) { if (appenderCount == 0) { appenderCount++; addInfo("Attaching appender named ["+newAppender.getName()+"] to AsyncAppender."); aai.addAppender(newAppender); } else { addWarn("One and only one appender may be attached to AsyncAppender."); addWarn("Ignoring additional appender named [" + newAppender.getName() + "]"); } }
@Override public void write(String entry) throws IOException { final LoggingEvent event = new LoggingEvent(); event.setLevel(Level.INFO); event.setLoggerName("http.request"); event.setMessage(entry); event.setTimeStamp(System.currentTimeMillis()); appenders.appendLoopOnAppenders(event); }
@Override public RequestLog build(String name) { final Logger logger = (Logger) LoggerFactory.getLogger("http.request"); logger.setAdditive(false); final LoggerContext context = logger.getLoggerContext(); final LevelFilterFactory<ILoggingEvent> levelFilterFactory = new NullLevelFilterFactory<>(); final AsyncAppenderFactory<ILoggingEvent> asyncAppenderFactory = new AsyncLoggingEventAppenderFactory(); final LayoutFactory<ILoggingEvent> layoutFactory = (c, tz) -> new RequestLogLayout(c); final AppenderAttachableImpl<ILoggingEvent> attachable = new AppenderAttachableImpl<>(); for (AppenderFactory<ILoggingEvent> appender : appenders) { attachable.addAppender(appender.build(context, name, layoutFactory, levelFilterFactory, asyncAppenderFactory)); } return new DropwizardSlf4jRequestLog(attachable, timeZone); } }
@Override public void detachAndStopAllAppenders() { aai.detachAndStopAllAppenders(); }
public boolean detachAppender(String name) { if (aai == null) { return false; } return aai.detachAppender(name); }