Logstash / Logback setup using Spring-boot configuration

I am trying to programmatically configure logstash with logback in my Spring boot project to configure it using the environment.

To do this, I use a simple @Configuration bean (simplified code, then I will set the host / port using the environment):

@Component @Slf4j public class LogstashConfiguration { private LogstashTcpSocketAppender logstashTcpSocketAppender; @PostConstruct public void init() { Logger rootLogger = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); LoggerContext loggerContext = rootLogger.getLoggerContext(); //loggerContext.reset(); // shouldn't need to use that logstashTcpSocketAppender = new LogstashTcpSocketAppender(); logstashTcpSocketAppender.setName("logstash"); logstashTcpSocketAppender.setContext(loggerContext); logstashTcpSocketAppender.setRemoteHost("localhost"); logstashTcpSocketAppender.setPort(4560); PatternLayoutEncoder encoder = new PatternLayoutEncoder(); encoder.setContext(loggerContext); encoder.start(); logstashTcpSocketAppender.setEncoder(encoder); logstashTcpSocketAppender.start(); rootLogger.addAppender(logstashTcpSocketAppender); rootLogger.setLevel(Level.ALL); rootLogger.warn("TEST"); } 

I see that TcpSocketAppender is logging on my logstash server, but I never get the TEST log. But I see "TEST" in my console.

Also when setting up the logger mentioned in https://github.com/logstash/logstash-logback-encoder#tcp , it also works.

Do you have any suggestion to do this job?

Thanks,

Fabris

+6
source share
1 answer

In fact, the application was correctly tied to the registrar, but the connection to logstash failed using SocketException (broken channel).

To solve this problem, I just needed to use LogstashEncoder instead of PatternLayoutEncoder.

+2
source

Source: https://habr.com/ru/post/990030/


All Articles