0
votes

Version data:

  • slf4j-api - 1.7.25
  • logback-core - 1.2.3
  • logback-classic - 1.2.3

I have a pretty simple appender I'm testing with:

public class MyAppender extends AppenderBase<ILoggingEvent> {
  @Override
  protected String getName() {
    return "Test Instance";
  }

  @Override
  protected void append(ILoggingEvent event) {
    System.err.println("Hey, it worked!");
  }
}

It doesn't get called when I do this:

Logger logger = (Logger) LoggerFactory.getLogger(MyTest.class);
logger.addAppender(new MyAppender());
Assert.assertNotNull(logger.getAppender("Test Instance"));
logger.info("Some message");

My logback-text.xml looks like this:

<configuration>
  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] - %msg%n</pattern>
    </encoder>
  </appender>
  <root level="INFO">
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

Is there something I am missing in initialization of my appender?

1

1 Answers

0
votes

As always I answer this as soon as I post it. For anyone else hitting this you need to add:

MyAppender appender = new MyAppender();
appender.start();