|
@@ -1,8 +1,15 @@
|
|
|
package cc.mrbird.febs.common.logging.starter.configure;
|
|
package cc.mrbird.febs.common.logging.starter.configure;
|
|
|
|
|
|
|
|
import cc.mrbird.febs.common.logging.starter.properties.FebsLogProperties;
|
|
import cc.mrbird.febs.common.logging.starter.properties.FebsLogProperties;
|
|
|
|
|
+import ch.qos.logback.classic.Level;
|
|
|
import ch.qos.logback.classic.Logger;
|
|
import ch.qos.logback.classic.Logger;
|
|
|
import ch.qos.logback.classic.LoggerContext;
|
|
import ch.qos.logback.classic.LoggerContext;
|
|
|
|
|
+import ch.qos.logback.classic.encoder.PatternLayoutEncoder;
|
|
|
|
|
+import ch.qos.logback.classic.filter.LevelFilter;
|
|
|
|
|
+import ch.qos.logback.classic.spi.ILoggingEvent;
|
|
|
|
|
+import ch.qos.logback.core.rolling.RollingFileAppender;
|
|
|
|
|
+import ch.qos.logback.core.rolling.TimeBasedRollingPolicy;
|
|
|
|
|
+import ch.qos.logback.core.spi.FilterReply;
|
|
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
import net.logstash.logback.appender.LogstashTcpSocketAppender;
|
|
import net.logstash.logback.appender.LogstashTcpSocketAppender;
|
|
@@ -13,6 +20,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
|
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
|
|
import org.springframework.context.annotation.Bean;
|
|
import org.springframework.context.annotation.Bean;
|
|
|
import org.springframework.context.annotation.Configuration;
|
|
import org.springframework.context.annotation.Configuration;
|
|
|
|
|
+import org.springframework.core.annotation.Order;
|
|
|
|
|
|
|
|
import java.util.HashMap;
|
|
import java.util.HashMap;
|
|
|
|
|
|
|
@@ -31,16 +39,22 @@ public class FebsLogAutoConfigure {
|
|
|
this.properties = properties;
|
|
this.properties = properties;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ private static final LoggerContext context;
|
|
|
|
|
+ private static final Logger rootLogger;
|
|
|
|
|
+
|
|
|
|
|
+ static{
|
|
|
|
|
+ context = (LoggerContext) LoggerFactory.getILoggerFactory();
|
|
|
|
|
+ rootLogger = context.getLogger("ROOT");
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
@ConditionalOnProperty(name = "febs.log.enable-elk", havingValue = "true", matchIfMissing = true)
|
|
@ConditionalOnProperty(name = "febs.log.enable-elk", havingValue = "true", matchIfMissing = true)
|
|
|
@Bean
|
|
@Bean
|
|
|
public void enableElk() throws JsonProcessingException {
|
|
public void enableElk() throws JsonProcessingException {
|
|
|
- LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
|
|
|
|
|
- Logger logger = context.getLogger("ROOT");
|
|
|
|
|
LogstashTcpSocketAppender appender = new LogstashTcpSocketAppender();
|
|
LogstashTcpSocketAppender appender = new LogstashTcpSocketAppender();
|
|
|
LogstashEncoder encoder = new LogstashEncoder();
|
|
LogstashEncoder encoder = new LogstashEncoder();
|
|
|
|
|
|
|
|
HashMap<String, String> customFields = new HashMap<>();
|
|
HashMap<String, String> customFields = new HashMap<>();
|
|
|
- customFields.put("application-name",applicationName);
|
|
|
|
|
|
|
+ customFields.put("application-name", applicationName);
|
|
|
String customFieldsString = new ObjectMapper().writeValueAsString(customFields);
|
|
String customFieldsString = new ObjectMapper().writeValueAsString(customFields);
|
|
|
encoder.setCustomFields(customFieldsString);
|
|
encoder.setCustomFields(customFieldsString);
|
|
|
|
|
|
|
@@ -48,7 +62,7 @@ public class FebsLogAutoConfigure {
|
|
|
appender.addDestination(properties.getLogstashHost());
|
|
appender.addDestination(properties.getLogstashHost());
|
|
|
appender.setName("logstash[" + applicationName + "]");
|
|
appender.setName("logstash[" + applicationName + "]");
|
|
|
appender.start();
|
|
appender.start();
|
|
|
-
|
|
|
|
|
- logger.addAppender(appender);
|
|
|
|
|
|
|
+ appender.setContext(context);
|
|
|
|
|
+ rootLogger.addAppender(appender);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|