/src/main/java/com/dmtools/webapp/config/LoggingConfiguration.java
https://gitlab.com/cubetek/dmtools · Java · 70 lines · 50 code · 17 blank · 3 comment · 1 complexity · f776901d9686a768f0d6c6fcd91db8b0 MD5 · raw file
- package com.dmtools.webapp.config;
- import ch.qos.logback.classic.AsyncAppender;
- import ch.qos.logback.classic.LoggerContext;
- import net.logstash.logback.appender.LogstashSocketAppender;
- import net.logstash.logback.stacktrace.ShortenedThrowableConverter;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Value;
- import org.springframework.context.annotation.Configuration;
- import javax.annotation.PostConstruct;
- import javax.inject.Inject;
- @Configuration
- public class LoggingConfiguration {
- private final Logger log = LoggerFactory.getLogger(LoggingConfiguration.class);
- private LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
- @Value("${spring.application.name}")
- private String appName;
- @Value("${server.port}")
- private String serverPort;
- @Inject
- private DMToolsProperties DMToolsProperties;
- @PostConstruct
- private void init() {
- if (DMToolsProperties.getLogging().getLogstash().isEnabled()) {
- addLogstashAppender();
- }
- }
- public void addLogstashAppender() {
- log.info("Initializing Logstash logging");
- LogstashSocketAppender logstashAppender = new LogstashSocketAppender();
- logstashAppender.setName("LOGSTASH");
- logstashAppender.setContext(context);
- String customFields = "{\"app_name\":\"" + appName + "\",\"app_port\":\"" + serverPort + "\"}";
- // Set the Logstash appender config from JHipster properties
- logstashAppender.setSyslogHost(DMToolsProperties.getLogging().getLogstash().getHost());
- logstashAppender.setPort(DMToolsProperties.getLogging().getLogstash().getPort());
- logstashAppender.setCustomFields(customFields);
- // Limit the maximum length of the forwarded stacktrace so that it won't exceed the 8KB UDP limit of logstash
- ShortenedThrowableConverter throwableConverter = new ShortenedThrowableConverter();
- throwableConverter.setMaxLength(7500);
- throwableConverter.setRootCauseFirst(true);
- logstashAppender.setThrowableConverter(throwableConverter);
- logstashAppender.start();
- // Wrap the appender in an Async appender for performance
- AsyncAppender asyncLogstashAppender = new AsyncAppender();
- asyncLogstashAppender.setContext(context);
- asyncLogstashAppender.setName("ASYNC_LOGSTASH");
- asyncLogstashAppender.setQueueSize(DMToolsProperties.getLogging().getLogstash().getQueueSize());
- asyncLogstashAppender.addAppender(logstashAppender);
- asyncLogstashAppender.start();
- context.getLogger("ROOT").addAppender(asyncLogstashAppender);
- }
- }