getProperties() {
+ return this.properties;
+ }
+
+ public int incrementRetries() {
+ return this.retries.incrementAndGet();
+ }
+
+ }
+
+}
diff --git a/src/main/java/cn/waynechu/bootstarter/logger/aware/SentryContextAware.java b/src/main/java/cn/waynechu/bootstarter/logger/aware/SentryContextAware.java
new file mode 100644
index 0000000..e194800
--- /dev/null
+++ b/src/main/java/cn/waynechu/bootstarter/logger/aware/SentryContextAware.java
@@ -0,0 +1,34 @@
+package cn.waynechu.bootstarter.logger.aware;
+
+import cn.waynechu.springcloud.common.util.StringUtil;
+import org.springframework.beans.BeansException;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.core.Ordered;
+import org.springframework.core.PriorityOrdered;
+import org.springframework.core.env.Environment;
+
+/**
+ * @author zhuwei
+ * @since 2019/1/8 13:26
+ */
+public class SentryContextAware implements ApplicationContextAware, PriorityOrdered {
+ public static final String SENTRY_ENABLE = "sentry.enable";
+ private static final String SENTRY_DSN = "sentry.dsn";
+ private static final String TRUE = "true";
+
+ @Override
+ public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+ Environment environment = applicationContext.getEnvironment();
+ String sentryEnable = environment.getProperty(SENTRY_ENABLE);
+ String sentryDsn = environment.getProperty(SENTRY_DSN);
+ if (TRUE.equalsIgnoreCase(sentryEnable) && StringUtil.isBlank(sentryDsn)) {
+ throw new RuntimeException("sentry.dsn未配置!");
+ }
+ }
+
+ @Override
+ public int getOrder() {
+ return Ordered.HIGHEST_PRECEDENCE;
+ }
+}
diff --git a/src/main/java/cn/waynechu/bootstarter/logger/constant/TraceKeyConstant.java b/src/main/java/cn/waynechu/bootstarter/logger/constant/TraceKeyConstant.java
new file mode 100644
index 0000000..738623e
--- /dev/null
+++ b/src/main/java/cn/waynechu/bootstarter/logger/constant/TraceKeyConstant.java
@@ -0,0 +1,39 @@
+package cn.waynechu.bootstarter.logger.constant;
+
+import lombok.experimental.UtilityClass;
+
+/**
+ * @author zhuwei
+ * @since 2020/3/26 11:39
+ */
+@UtilityClass
+public class TraceKeyConstant {
+
+ /**
+ * 请求头追踪key
+ */
+ public static final String HEADER_KEY_API_VERSION = "api-version";
+ public static final String HEADER_KEY_CHANNEL = "channel";
+ public static final String HEADER_KEY_DEVICE_ID = "device-id";
+ public static final String HEADER_KEY_REQUEST_ID = "request-id";
+ public static final String HEADER_KEY_SC_CLIENT_IP = "sc-client-ip";
+ public static final String HEADER_KEY_ORIGIN_URL = "origin-url";
+ public static final String HEADER_KEY_TRACE_APP_IDS = "trace-app-ids";
+ public static final String HEADER_KEY_TRACE_APP_NAMES = "trace-app-names";
+ public static final String HEADER_KEY_TRACE_HOST_NAMES = "trace-host-names";
+ public static final String HEADER_KEY_TRACE_HOST_ADDRESSES = "trace-host-addresses";
+
+ /**
+ * MDC追踪key
+ */
+ public static final String MDC_KEY_API_VERSION = "apiVersion";
+ public static final String MDC_KEY_CHANNEL = "channel";
+ public static final String MDC_KEY_DEVICE_ID = "deviceId";
+ public static final String MDC_KEY_REQUEST_ID = "requestId";
+ public static final String MDC_KEY_SC_CLIENT_IP = "scClientIp";
+ public static final String MDC_KEY_ORIGIN_URL = "originUrl";
+ public static final String MDC_KEY_TRACE_APP_IDS = "traceAppIds";
+ public static final String MDC_KEY_TRACE_APP_NAMES = "traceAppNames";
+ public static final String MDC_KEY_TRACE_HOST_NAMES = "traceHostNames";
+ public static final String MDC_KEY_TRACE_HOST_ADDRESSES = "traceHostAddresses";
+}
diff --git a/src/main/java/cn/waynechu/bootstarter/logger/filter/MDCFilter.java b/src/main/java/cn/waynechu/bootstarter/logger/filter/MDCFilter.java
new file mode 100644
index 0000000..1887fbb
--- /dev/null
+++ b/src/main/java/cn/waynechu/bootstarter/logger/filter/MDCFilter.java
@@ -0,0 +1,101 @@
+package cn.waynechu.bootstarter.logger.filter;
+
+import cn.waynechu.bootstarter.logger.provider.ApplicationProvider;
+import cn.waynechu.springcloud.common.util.MDCUtil;
+import cn.waynechu.springcloud.common.util.StringUtil;
+import cn.waynechu.springcloud.common.util.UUIDUtil;
+import cn.waynechu.springcloud.common.util.WebUtil;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.slf4j.MDC;
+
+import javax.servlet.*;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+import static cn.waynechu.bootstarter.logger.constant.TraceKeyConstant.*;
+
+/**
+ * MDC过滤器
+ *
+ * 该过滤器用于添加请求信息到MDC上下文中,并且添加header追踪信息
+ *
+ * @author zhuwei
+ * @since 2019/1/4 15:10
+ */
+@Slf4j
+@Data
+public class MDCFilter implements Filter {
+
+ @Override
+ public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
+ try {
+ // 添加请求头及MDC信息
+ ModifyHttpServletRequestWrapper modifyHttpServletRequestWrapper = this.modifyRequestAndAddMdc((HttpServletRequest) servletRequest);
+
+ // ResponseHeader返回requestId
+ HttpServletResponse response = (HttpServletResponse) servletResponse;
+ response.setHeader(HEADER_KEY_REQUEST_ID, modifyHttpServletRequestWrapper.getHeader(HEADER_KEY_REQUEST_ID));
+ filterChain.doFilter(modifyHttpServletRequestWrapper, servletResponse);
+ } finally {
+ MDC.clear();
+ }
+ }
+
+ private ModifyHttpServletRequestWrapper modifyRequestAndAddMdc(HttpServletRequest request) {
+ ModifyHttpServletRequestWrapper httpServletRequestWrapper = new ModifyHttpServletRequestWrapper(request);
+
+ MDCUtil.copyReqHeaderToMDC(httpServletRequestWrapper, HEADER_KEY_API_VERSION, HEADER_KEY_CHANNEL, HEADER_KEY_DEVICE_ID);
+
+ String requestId = WebUtil.getReqHeader(HEADER_KEY_REQUEST_ID, request);
+ if (StringUtil.isBlank(requestId)) {
+ // 除了网关传递过来requestId外,应用本身也能产生requestId
+ requestId = UUIDUtil.getShortUUID();
+ httpServletRequestWrapper.putHeader(HEADER_KEY_REQUEST_ID, requestId);
+ }
+ MDC.put(MDC_KEY_REQUEST_ID, requestId);
+
+ String scClientIp = WebUtil.getReqHeader(HEADER_KEY_SC_CLIENT_IP, request);
+ MDC.put(MDC_KEY_SC_CLIENT_IP, scClientIp);
+ httpServletRequestWrapper.putHeader(HEADER_KEY_SC_CLIENT_IP, scClientIp);
+
+ String originUrl = WebUtil.getReqHeader(HEADER_KEY_ORIGIN_URL, request);
+ MDC.put(MDC_KEY_ORIGIN_URL, originUrl);
+ httpServletRequestWrapper.putHeader(HEADER_KEY_ORIGIN_URL, originUrl);
+
+ String appId = ApplicationProvider.getAppId();
+ String traceAppIds = WebUtil.getReqHeader(HEADER_KEY_TRACE_APP_IDS, request);
+ if (StringUtil.isNotBlank(traceAppIds)) {
+ appId = traceAppIds + "," + appId;
+ }
+ MDC.put(MDC_KEY_TRACE_APP_IDS, appId);
+ httpServletRequestWrapper.putHeader(HEADER_KEY_TRACE_APP_IDS, appId);
+
+ String appName = ApplicationProvider.getAppName();
+ String traceAppNames = WebUtil.getReqHeader(HEADER_KEY_TRACE_APP_NAMES, request);
+ if (StringUtil.isNotBlank(traceAppNames)) {
+ appName = traceAppNames + "," + appName;
+ }
+ MDC.put(MDC_KEY_TRACE_APP_NAMES, appName);
+ httpServletRequestWrapper.putHeader(HEADER_KEY_TRACE_APP_NAMES, appName);
+
+ String hostName = ApplicationProvider.getHostName();
+ String traceHostNames = WebUtil.getReqHeader(HEADER_KEY_TRACE_HOST_NAMES, request);
+ if (StringUtil.isNotBlank(traceHostNames)) {
+ hostName = traceHostNames + "," + hostName;
+ }
+ MDC.put(MDC_KEY_TRACE_HOST_NAMES, hostName);
+ httpServletRequestWrapper.putHeader(HEADER_KEY_TRACE_HOST_NAMES, hostName);
+
+ String hostAddress = ApplicationProvider.getHostAddress();
+ String traceHostAddress = WebUtil.getReqHeader(HEADER_KEY_TRACE_HOST_ADDRESSES, request);
+ if (StringUtil.isNotBlank(traceHostAddress)) {
+ hostAddress = traceHostAddress + "," + hostAddress;
+ }
+ MDC.put(MDC_KEY_TRACE_HOST_ADDRESSES, hostAddress);
+ httpServletRequestWrapper.putHeader(HEADER_KEY_TRACE_HOST_ADDRESSES, hostAddress);
+
+ return httpServletRequestWrapper;
+ }
+}
diff --git a/src/main/java/cn/waynechu/bootstarter/logger/filter/ModifyHttpServletRequestWrapper.java b/src/main/java/cn/waynechu/bootstarter/logger/filter/ModifyHttpServletRequestWrapper.java
new file mode 100644
index 0000000..7d9af7c
--- /dev/null
+++ b/src/main/java/cn/waynechu/bootstarter/logger/filter/ModifyHttpServletRequestWrapper.java
@@ -0,0 +1,43 @@
+package cn.waynechu.bootstarter.logger.filter;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
+import java.util.*;
+
+/**
+ * @author zhuwei
+ * @since 2019/9/29 19:31
+ */
+public class ModifyHttpServletRequestWrapper extends HttpServletRequestWrapper {
+
+ private Map customHeaders;
+
+ public ModifyHttpServletRequestWrapper(HttpServletRequest request) {
+ super(request);
+ this.customHeaders = new HashMap<>();
+ }
+
+ public void putHeader(String name, String value) {
+ this.customHeaders.put(name, value);
+ }
+
+ @Override
+ public String getHeader(String name) {
+ String value = customHeaders.get(name);
+ if (value != null) {
+ return value;
+ }
+ return ((HttpServletRequest) getRequest()).getHeader(name);
+ }
+
+ @Override
+ public Enumeration getHeaderNames() {
+ Set set = new HashSet<>(customHeaders.keySet());
+ Enumeration enumeration = ((HttpServletRequest) getRequest()).getHeaderNames();
+ while (enumeration.hasMoreElements()) {
+ String name = enumeration.nextElement();
+ set.add(name);
+ }
+ return Collections.enumeration(set);
+ }
+}
diff --git a/src/main/java/cn/waynechu/bootstarter/logger/layout/RabbitmqLayout.java b/src/main/java/cn/waynechu/bootstarter/logger/layout/RabbitmqLayout.java
new file mode 100644
index 0000000..89b3e3a
--- /dev/null
+++ b/src/main/java/cn/waynechu/bootstarter/logger/layout/RabbitmqLayout.java
@@ -0,0 +1,112 @@
+package cn.waynechu.bootstarter.logger.layout;
+
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.classic.spi.IThrowableProxy;
+import ch.qos.logback.classic.spi.ThrowableProxy;
+import ch.qos.logback.core.LayoutBase;
+import cn.waynechu.bootstarter.logger.provider.ApplicationProvider;
+import cn.waynechu.springcloud.common.aspect.AbstractControllerLogAspect;
+import cn.waynechu.springcloud.common.util.DesensitizeUtil;
+import cn.waynechu.springcloud.common.util.StringUtil;
+import com.alibaba.fastjson.JSONObject;
+import lombok.extern.slf4j.Slf4j;
+
+import java.time.Instant;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+import java.time.format.DateTimeFormatter;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author zhuwei
+ * @since 2018/12/27 18:52
+ */
+@Slf4j
+public class RabbitmqLayout extends LayoutBase {
+
+ @Override
+ public String doLayout(ILoggingEvent iLoggingEvent) {
+ return buildElkFormat(iLoggingEvent);
+ }
+
+ private String buildElkFormat(ILoggingEvent iLoggingEvent) {
+ JSONObject root = new JSONObject();
+
+ // write mdc fields
+ writeMdc(root, iLoggingEvent);
+ // write basic fields
+ writeBasic(root, iLoggingEvent);
+ // write throwable fields
+ writeThrowable(root, iLoggingEvent);
+
+ return root.toString();
+ }
+
+ private void writeMdc(JSONObject json, ILoggingEvent event) {
+ if (event.getMDCPropertyMap() != null) {
+ json.putAll(event.getMDCPropertyMap());
+
+ // 转化timeTaken为Integer类型
+ String timeTaken = event.getMDCPropertyMap().get(AbstractControllerLogAspect.MDC_KEY_TIME_TAKEN);
+ if (StringUtil.isNotBlank(timeTaken)) {
+ try {
+ json.put(AbstractControllerLogAspect.MDC_KEY_TIME_TAKEN, Integer.valueOf(timeTaken));
+ } catch (Exception e) {
+ this.addError("timeTaken转换成Integer失败", e);
+ }
+ }
+ }
+ }
+
+ private void writeBasic(JSONObject json, ILoggingEvent event) {
+ json.put("parentProjectVersion", ApplicationProvider.getParentProjectVersion());
+ json.put("appId", ApplicationProvider.getAppId());
+ json.put("appName", ApplicationProvider.getAppName());
+ json.put("hostName", ApplicationProvider.getHostName());
+ json.put("hostAddress", ApplicationProvider.getHostAddress());
+
+ json.put("logger", event.getLoggerName());
+ json.put("threadName", event.getThreadName());
+ json.put("level", event.getLevel().toString());
+ LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(event.getTimeStamp()),
+ ZoneId.systemDefault());
+ json.put("time", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS").format(localDateTime));
+ // 日志脱敏 & 超长截取
+ String[] keyArray = {DesensitizeUtil.PASSWORD, DesensitizeUtil.PWD};
+ String message = event.getFormattedMessage();
+ if (StringUtil.isNotBlank(message)) {
+ message = message.length() <= 4096 ? message : message.substring(0, 4096) + "...总长度为: " + message.length();
+ }
+ json.put("message", DesensitizeUtil.desensitize(message, keyArray));
+ }
+
+ private void writeThrowable(JSONObject json, ILoggingEvent event) {
+ IThrowableProxy iThrowableProxy = event.getThrowableProxy();
+ if (iThrowableProxy instanceof ThrowableProxy) {
+ ThrowableProxy throwableProxy = (ThrowableProxy) iThrowableProxy;
+ Throwable t = throwableProxy.getThrowable();
+ Throwable ec = t.getCause();
+ JSONObject throwable = new JSONObject();
+
+ throwable.put("message", t.getMessage());
+ throwable.put("className", t.getClass().getCanonicalName());
+
+ if (ec == null) {
+ List traceObjects = new ArrayList<>();
+ for (StackTraceElement ste : t.getStackTrace()) {
+ JSONObject element = new JSONObject();
+ element.put("class", ste.getClassName());
+ element.put("method", ste.getMethodName());
+ element.put("line", ste.getLineNumber());
+ element.put("file", ste.getFileName());
+ traceObjects.add(element);
+ }
+ json.put("stackTrace", traceObjects);
+ } else {
+ throwable.put("cause", ec);
+ }
+ json.put("throwable", throwable);
+ }
+ }
+}
diff --git a/src/main/java/cn/waynechu/bootstarter/logger/properties/ElkProperty.java b/src/main/java/cn/waynechu/bootstarter/logger/properties/ElkProperty.java
new file mode 100644
index 0000000..da4f0bb
--- /dev/null
+++ b/src/main/java/cn/waynechu/bootstarter/logger/properties/ElkProperty.java
@@ -0,0 +1,29 @@
+package cn.waynechu.bootstarter.logger.properties;
+
+import cn.waynechu.bootstarter.logger.properties.nested.KafkaProperty;
+import cn.waynechu.bootstarter.logger.properties.nested.RabbitmqProperty;
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+import org.springframework.boot.context.properties.NestedConfigurationProperty;
+
+/**
+ * @author zhuwei
+ * @since 2019/4/29 17:40
+ */
+@Data
+@ConfigurationProperties(prefix = ElkProperty.ELK_CONFIG_PREFIX)
+public class ElkProperty {
+ public static final String ELK_CONFIG_PREFIX = "elk";
+
+ /**
+ * rabbitmq配置
+ */
+ @NestedConfigurationProperty
+ private RabbitmqProperty rabbitmq;
+
+ /**
+ * kafka配置
+ */
+ @NestedConfigurationProperty
+ private KafkaProperty kafka;
+}
diff --git a/src/main/java/cn/waynechu/bootstarter/logger/properties/LoggerProperty.java b/src/main/java/cn/waynechu/bootstarter/logger/properties/LoggerProperty.java
new file mode 100644
index 0000000..d6122d0
--- /dev/null
+++ b/src/main/java/cn/waynechu/bootstarter/logger/properties/LoggerProperty.java
@@ -0,0 +1,25 @@
+package cn.waynechu.bootstarter.logger.properties;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+/**
+ * @author zhuwei
+ * @since 2019/7/10 20:34
+ */
+@Data
+@ConfigurationProperties(prefix = LoggerProperty.LOGGER_PREFIX)
+public class LoggerProperty {
+
+ public static final String LOGGER_PREFIX = "biz.logger.version";
+
+ /**
+ * 指定banner展示的 SpringCloud 版本
+ */
+ private String springCloudDependencies;
+
+ /**
+ * 指定banner展示的父项目版本
+ */
+ private String parentProject;
+}
diff --git a/src/main/java/cn/waynechu/bootstarter/logger/properties/SentryProperties.java b/src/main/java/cn/waynechu/bootstarter/logger/properties/SentryProperties.java
new file mode 100644
index 0000000..3949466
--- /dev/null
+++ b/src/main/java/cn/waynechu/bootstarter/logger/properties/SentryProperties.java
@@ -0,0 +1,28 @@
+package cn.waynechu.bootstarter.logger.properties;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+/**
+ * @author zhuwei
+ * @since 2019/1/8 12:52
+ */
+@Data
+@ConfigurationProperties(prefix = "sentry")
+public class SentryProperties {
+
+ /**
+ * 是否开启sentry日志上传
+ */
+ private boolean enable = false;
+
+ /**
+ * sentry dsn 地址
+ */
+ private String dsn;
+
+ /**
+ * 要追踪的包名,多个请用 “,” 分割。默认上传所有包下的日志
+ */
+ private String stacktraceAppPackages = "";
+}
diff --git a/src/main/java/cn/waynechu/bootstarter/logger/properties/nested/KafkaProperty.java b/src/main/java/cn/waynechu/bootstarter/logger/properties/nested/KafkaProperty.java
new file mode 100644
index 0000000..bea92d0
--- /dev/null
+++ b/src/main/java/cn/waynechu/bootstarter/logger/properties/nested/KafkaProperty.java
@@ -0,0 +1,36 @@
+package cn.waynechu.bootstarter.logger.properties.nested;
+
+import lombok.Data;
+
+/**
+ * @author zhuwei
+ * @since 2019/10/31 15:46
+ */
+@Data
+public class KafkaProperty {
+
+ /**
+ * 是否开启日志上传
+ */
+ private Boolean enable = false;
+
+ private String host;
+
+ private Integer port;
+
+ private String topic;
+
+ private Long bufferMemory;
+
+ private String defaultHost;
+
+ private Integer acks;
+
+ private Integer lingerMs;
+
+ private Integer maxBlockMs;
+
+ private String compressionType;
+
+ private Integer retries;
+}
diff --git a/src/main/java/cn/waynechu/bootstarter/logger/properties/nested/RabbitmqProperty.java b/src/main/java/cn/waynechu/bootstarter/logger/properties/nested/RabbitmqProperty.java
new file mode 100644
index 0000000..b31c009
--- /dev/null
+++ b/src/main/java/cn/waynechu/bootstarter/logger/properties/nested/RabbitmqProperty.java
@@ -0,0 +1,61 @@
+package cn.waynechu.bootstarter.logger.properties.nested;
+
+import lombok.Data;
+
+/**
+ * @author zhuwei
+ * @since 2019/10/31 15:45
+ */
+@Data
+public class RabbitmqProperty {
+
+ /**
+ * 是否开启日志上传
+ */
+ private Boolean enable = false;
+
+ /**
+ * RabbitMQ host
+ */
+ private String host;
+
+ /**
+ * RabbitMQ port
+ */
+ private Integer port;
+
+ /**
+ * RabbitMQ username
+ */
+ private String username;
+
+ /**
+ * RabbitMQ password
+ */
+ private String password;
+
+ /**
+ * RabbitMQ virtualHost
+ */
+ private String virtualHost;
+
+ /**
+ * RabbitMQ exchange
+ */
+ private String exchange;
+
+ /**
+ * RabbitMQ routingKey
+ */
+ private String routingKey;
+
+ /**
+ * 应用ID
+ */
+ private String applicationId;
+
+ /**
+ * 客户端标识(在Rabbit Admin界面展示)
+ */
+ private String connectionName;
+}
diff --git a/src/main/java/cn/waynechu/bootstarter/logger/provider/ApplicationProvider.java b/src/main/java/cn/waynechu/bootstarter/logger/provider/ApplicationProvider.java
new file mode 100644
index 0000000..679e4b3
--- /dev/null
+++ b/src/main/java/cn/waynechu/bootstarter/logger/provider/ApplicationProvider.java
@@ -0,0 +1,124 @@
+package cn.waynechu.bootstarter.logger.provider;
+
+
+import cn.waynechu.springcloud.common.util.StringUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.core.Ordered;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
+
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.InetAddress;
+import java.net.UnknownHostException;
+import java.nio.charset.StandardCharsets;
+import java.util.Properties;
+
+/**
+ * @author zhuwei
+ * @since 2019/9/26 15:43
+ */
+@Slf4j
+@Component
+@Order(Ordered.HIGHEST_PRECEDENCE)
+public class ApplicationProvider implements InitializingBean {
+
+ private static String hostName = "-";
+ private static String hostAddress = "-";
+
+ private static String appId = "-";
+ private static String appName = "-";
+ private static String parentProjectVersion = "-";
+
+ private Properties appProperties = new Properties();
+ public static final String APP_PROPERTIES_CLASSPATH = "/META-INF/app.properties";
+
+ public ApplicationProvider(@Value("${spring.application.name:-}") String applicationName,
+ @Value("${biz.logger.version.parent-project:-}") String parentProjectVersion) {
+ try {
+ ApplicationProvider.appName = applicationName;
+ InetAddress address = InetAddress.getLocalHost();
+ ApplicationProvider.hostName = address.getHostName();
+ ApplicationProvider.hostAddress = address.getHostAddress();
+ ApplicationProvider.parentProjectVersion = parentProjectVersion;
+ } catch (UnknownHostException e) {
+ // do nothing here.
+ }
+ }
+
+ @Override
+ public void afterPropertiesSet() {
+ try {
+ InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(APP_PROPERTIES_CLASSPATH);
+ if (in == null) {
+ in = ApplicationProvider.class.getResourceAsStream(APP_PROPERTIES_CLASSPATH);
+ }
+
+ appProperties.load(new InputStreamReader(in, StandardCharsets.UTF_8));
+ this.initAppId();
+ } catch (Exception ex) {
+ log.error("Initialize DefaultApplicationProvider failed.", ex);
+ }
+ }
+
+ private void initAppId() {
+ // 1. Get app.id from System Property
+ appId = System.getProperty("app.id");
+ if (StringUtil.isNotBlank(appId)) {
+ appId = appId.trim();
+ log.info("App ID is set to {} by app.id property from System Property", appId);
+ return;
+ }
+
+ // 2. Try to get app id from OS environment variable
+ appId = System.getenv("APP_ID");
+ if (StringUtil.isNotBlank(appId)) {
+ appId = appId.trim();
+ log.info("App ID is set to {} by APP_ID property from OS environment variable", appId);
+ return;
+ }
+
+ // 3. Try to get app id from app.properties.
+ appId = appProperties.getProperty("app.id");
+ if (StringUtil.isNotBlank(appId)) {
+ appId = appId.trim();
+ log.info("App ID is set to {} by app.id property from {}", appId, APP_PROPERTIES_CLASSPATH);
+ return;
+ }
+
+ appId = "-";
+ log.warn("app.id is not available from System Property and {}. It is set to -", APP_PROPERTIES_CLASSPATH);
+ }
+
+ public static String getHostAddress() {
+ return hostAddress;
+ }
+
+ public static String getHostName() {
+ return hostName;
+ }
+
+ public static String getAppName() {
+ return appName;
+ }
+
+ public static String getParentProjectVersion() {
+ return parentProjectVersion;
+ }
+
+ public static String getAppId() {
+ return appId;
+ }
+
+ public String getProperty(String name, String defaultValue) {
+ if ("app.id".equals(name)) {
+ String val = getAppId();
+ return val == null ? defaultValue : val;
+ } else {
+ String val = appProperties.getProperty(name, defaultValue);
+ return val == null ? defaultValue : val;
+ }
+ }
+}
diff --git a/src/main/resources/META-INF/spring.factories b/src/main/resources/META-INF/spring.factories
new file mode 100644
index 0000000..b5f10d0
--- /dev/null
+++ b/src/main/resources/META-INF/spring.factories
@@ -0,0 +1,2 @@
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
+cn.waynechu.bootstarter.logger.LoggerAutoConfiguration
\ No newline at end of file
diff --git a/src/main/resources/banner.txt b/src/main/resources/banner.txt
new file mode 100644
index 0000000..3fee5b0
--- /dev/null
+++ b/src/main/resources/banner.txt
@@ -0,0 +1,10 @@
+
+___ __ ______________
+__ | / /_____ _____ _____________ __ ____/__ /_____ __
+__ | /| / /_ __ `/_ / / /_ __ \ _ \ _ / __ __ \ / / /
+__ |/ |/ / / /_/ /_ /_/ /_ / / / __/ / /___ _ / / / /_/ /
+____/|__/ \__,_/ _\__, / /_/ /_/\___/ \____/ /_/ /_/\__,_/
+ /____/
+${AnsiColor.YELLOW}:: Spring Boot :: ${AnsiColor.WHITE}${spring-boot.formatted-version}
+${AnsiColor.YELLOW}:: Spring Cloud :: ${AnsiColor.WHITE}(${biz.logger.version.spring-cloud-dependencies})
+${AnsiColor.YELLOW}:: Parent Project :: ${AnsiColor.WHITE}(${biz.logger.version.parent-project})
\ No newline at end of file
diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml
new file mode 100644
index 0000000..c00147e
--- /dev/null
+++ b/src/main/resources/logback-spring.xml
@@ -0,0 +1,155 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${CONSOLE_LOG_PATTERN}
+
+
+
+
+
+
+
+
+
+ ERROR
+
+
+
+
+
+
+
+
+
+
+
+ ${elkRabbitmqHost}
+ ${elkRabbitmqPort}
+ ${elkRabbitmqUsername}
+ ${elkRabbitmqPassword}
+ ${elkRabbitmqApplicationId}
+ ${elkRabbitmqVirtualHost}
+ ${elkRabbitmqExchange}
+ topic
+ true
+ ${elkRabbitmqRoutingKey}
+ false
+ true
+ true
+ PERSISTENT
+ UTF-8
+ text/json
+ ${elkRabbitmqConnectionName}
+
+
+
+
+
+
+
+
+
+
+
+
+ INFO
+
+
+ ${elkKafkaTopic}
+
+
+
+
+
+
+
+
+
+ bootstrap.servers=${elkKafkaHost}:${elkKafkaPort}
+ buffer.memory=${elkKafkaBufferMemory}
+ acks=${elkKafkaAcks}
+ linger.ms=${elkKafkaLingerMs}
+ max.block.ms=${elkKafkaMaxBlockMs}
+ compression.type=${elkKafkaCompressionType}
+ retries=${elkKafkaRetries}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/target/biz-boot-starter-logger-1.0.0-RELEASE-sources.jar b/target/biz-boot-starter-logger-1.0.0-RELEASE-sources.jar
new file mode 100644
index 0000000..c915d1d
Binary files /dev/null and b/target/biz-boot-starter-logger-1.0.0-RELEASE-sources.jar differ
diff --git a/target/biz-boot-starter-logger-1.0.0-RELEASE.jar b/target/biz-boot-starter-logger-1.0.0-RELEASE.jar
new file mode 100644
index 0000000..e313cf9
Binary files /dev/null and b/target/biz-boot-starter-logger-1.0.0-RELEASE.jar differ
diff --git a/target/classes/META-INF/spring-configuration-metadata.json b/target/classes/META-INF/spring-configuration-metadata.json
new file mode 100644
index 0000000..d36933c
--- /dev/null
+++ b/target/classes/META-INF/spring-configuration-metadata.json
@@ -0,0 +1,182 @@
+{
+ "groups": [
+ {
+ "name": "biz.logger.version",
+ "type": "cn.waynechu.bootstarter.logger.properties.LoggerProperty",
+ "sourceType": "cn.waynechu.bootstarter.logger.properties.LoggerProperty"
+ },
+ {
+ "name": "elk",
+ "type": "cn.waynechu.bootstarter.logger.properties.ElkProperty",
+ "sourceType": "cn.waynechu.bootstarter.logger.properties.ElkProperty"
+ },
+ {
+ "name": "elk.kafka",
+ "type": "cn.waynechu.bootstarter.logger.properties.nested.KafkaProperty",
+ "sourceType": "cn.waynechu.bootstarter.logger.properties.ElkProperty"
+ },
+ {
+ "name": "elk.rabbitmq",
+ "type": "cn.waynechu.bootstarter.logger.properties.nested.RabbitmqProperty",
+ "sourceType": "cn.waynechu.bootstarter.logger.properties.ElkProperty"
+ },
+ {
+ "name": "sentry",
+ "type": "cn.waynechu.bootstarter.logger.properties.SentryProperties",
+ "sourceType": "cn.waynechu.bootstarter.logger.properties.SentryProperties"
+ }
+ ],
+ "properties": [
+ {
+ "name": "biz.logger.version.parent-project",
+ "type": "java.lang.String",
+ "description": "指定banner展示的父项目版本",
+ "sourceType": "cn.waynechu.bootstarter.logger.properties.LoggerProperty"
+ },
+ {
+ "name": "biz.logger.version.spring-cloud-dependencies",
+ "type": "java.lang.String",
+ "description": "指定banner展示的 SpringCloud 版本",
+ "sourceType": "cn.waynechu.bootstarter.logger.properties.LoggerProperty"
+ },
+ {
+ "name": "elk.kafka.acks",
+ "type": "java.lang.Integer",
+ "sourceType": "cn.waynechu.bootstarter.logger.properties.nested.KafkaProperty"
+ },
+ {
+ "name": "elk.kafka.buffer-memory",
+ "type": "java.lang.Long",
+ "sourceType": "cn.waynechu.bootstarter.logger.properties.nested.KafkaProperty"
+ },
+ {
+ "name": "elk.kafka.compression-type",
+ "type": "java.lang.String",
+ "sourceType": "cn.waynechu.bootstarter.logger.properties.nested.KafkaProperty"
+ },
+ {
+ "name": "elk.kafka.default-host",
+ "type": "java.lang.String",
+ "sourceType": "cn.waynechu.bootstarter.logger.properties.nested.KafkaProperty"
+ },
+ {
+ "name": "elk.kafka.enable",
+ "type": "java.lang.Boolean",
+ "description": "是否开启日志上传",
+ "sourceType": "cn.waynechu.bootstarter.logger.properties.nested.KafkaProperty",
+ "defaultValue": false
+ },
+ {
+ "name": "elk.kafka.host",
+ "type": "java.lang.String",
+ "sourceType": "cn.waynechu.bootstarter.logger.properties.nested.KafkaProperty"
+ },
+ {
+ "name": "elk.kafka.linger-ms",
+ "type": "java.lang.Integer",
+ "sourceType": "cn.waynechu.bootstarter.logger.properties.nested.KafkaProperty"
+ },
+ {
+ "name": "elk.kafka.max-block-ms",
+ "type": "java.lang.Integer",
+ "sourceType": "cn.waynechu.bootstarter.logger.properties.nested.KafkaProperty"
+ },
+ {
+ "name": "elk.kafka.port",
+ "type": "java.lang.Integer",
+ "sourceType": "cn.waynechu.bootstarter.logger.properties.nested.KafkaProperty"
+ },
+ {
+ "name": "elk.kafka.retries",
+ "type": "java.lang.Integer",
+ "sourceType": "cn.waynechu.bootstarter.logger.properties.nested.KafkaProperty"
+ },
+ {
+ "name": "elk.kafka.topic",
+ "type": "java.lang.String",
+ "sourceType": "cn.waynechu.bootstarter.logger.properties.nested.KafkaProperty"
+ },
+ {
+ "name": "elk.rabbitmq.application-id",
+ "type": "java.lang.String",
+ "description": "应用ID",
+ "sourceType": "cn.waynechu.bootstarter.logger.properties.nested.RabbitmqProperty"
+ },
+ {
+ "name": "elk.rabbitmq.connection-name",
+ "type": "java.lang.String",
+ "description": "客户端标识(在Rabbit Admin界面展示)",
+ "sourceType": "cn.waynechu.bootstarter.logger.properties.nested.RabbitmqProperty"
+ },
+ {
+ "name": "elk.rabbitmq.enable",
+ "type": "java.lang.Boolean",
+ "description": "是否开启日志上传",
+ "sourceType": "cn.waynechu.bootstarter.logger.properties.nested.RabbitmqProperty",
+ "defaultValue": false
+ },
+ {
+ "name": "elk.rabbitmq.exchange",
+ "type": "java.lang.String",
+ "description": "RabbitMQ exchange",
+ "sourceType": "cn.waynechu.bootstarter.logger.properties.nested.RabbitmqProperty"
+ },
+ {
+ "name": "elk.rabbitmq.host",
+ "type": "java.lang.String",
+ "description": "RabbitMQ host",
+ "sourceType": "cn.waynechu.bootstarter.logger.properties.nested.RabbitmqProperty"
+ },
+ {
+ "name": "elk.rabbitmq.password",
+ "type": "java.lang.String",
+ "description": "RabbitMQ password",
+ "sourceType": "cn.waynechu.bootstarter.logger.properties.nested.RabbitmqProperty"
+ },
+ {
+ "name": "elk.rabbitmq.port",
+ "type": "java.lang.Integer",
+ "description": "RabbitMQ port",
+ "sourceType": "cn.waynechu.bootstarter.logger.properties.nested.RabbitmqProperty"
+ },
+ {
+ "name": "elk.rabbitmq.routing-key",
+ "type": "java.lang.String",
+ "description": "RabbitMQ routingKey",
+ "sourceType": "cn.waynechu.bootstarter.logger.properties.nested.RabbitmqProperty"
+ },
+ {
+ "name": "elk.rabbitmq.username",
+ "type": "java.lang.String",
+ "description": "RabbitMQ username",
+ "sourceType": "cn.waynechu.bootstarter.logger.properties.nested.RabbitmqProperty"
+ },
+ {
+ "name": "elk.rabbitmq.virtual-host",
+ "type": "java.lang.String",
+ "description": "RabbitMQ virtualHost",
+ "sourceType": "cn.waynechu.bootstarter.logger.properties.nested.RabbitmqProperty"
+ },
+ {
+ "name": "sentry.dsn",
+ "type": "java.lang.String",
+ "description": "sentry dsn 地址",
+ "sourceType": "cn.waynechu.bootstarter.logger.properties.SentryProperties"
+ },
+ {
+ "name": "sentry.enable",
+ "type": "java.lang.Boolean",
+ "description": "是否开启sentry日志上传",
+ "sourceType": "cn.waynechu.bootstarter.logger.properties.SentryProperties",
+ "defaultValue": false
+ },
+ {
+ "name": "sentry.stacktrace-app-packages",
+ "type": "java.lang.String",
+ "description": "要追踪的包名,多个请用 “,” 分割。默认上传所有包下的日志",
+ "sourceType": "cn.waynechu.bootstarter.logger.properties.SentryProperties",
+ "defaultValue": ""
+ }
+ ],
+ "hints": []
+}
\ No newline at end of file
diff --git a/target/classes/META-INF/spring.factories b/target/classes/META-INF/spring.factories
new file mode 100644
index 0000000..b5f10d0
--- /dev/null
+++ b/target/classes/META-INF/spring.factories
@@ -0,0 +1,2 @@
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
+cn.waynechu.bootstarter.logger.LoggerAutoConfiguration
\ No newline at end of file
diff --git a/target/classes/banner.txt b/target/classes/banner.txt
new file mode 100644
index 0000000..3fee5b0
--- /dev/null
+++ b/target/classes/banner.txt
@@ -0,0 +1,10 @@
+
+___ __ ______________
+__ | / /_____ _____ _____________ __ ____/__ /_____ __
+__ | /| / /_ __ `/_ / / /_ __ \ _ \ _ / __ __ \ / / /
+__ |/ |/ / / /_/ /_ /_/ /_ / / / __/ / /___ _ / / / /_/ /
+____/|__/ \__,_/ _\__, / /_/ /_/\___/ \____/ /_/ /_/\__,_/
+ /____/
+${AnsiColor.YELLOW}:: Spring Boot :: ${AnsiColor.WHITE}${spring-boot.formatted-version}
+${AnsiColor.YELLOW}:: Spring Cloud :: ${AnsiColor.WHITE}(${biz.logger.version.spring-cloud-dependencies})
+${AnsiColor.YELLOW}:: Parent Project :: ${AnsiColor.WHITE}(${biz.logger.version.parent-project})
\ No newline at end of file
diff --git a/target/classes/cn/waynechu/bootstarter/logger/LoggerAutoConfiguration.class b/target/classes/cn/waynechu/bootstarter/logger/LoggerAutoConfiguration.class
new file mode 100644
index 0000000..0fd32f2
Binary files /dev/null and b/target/classes/cn/waynechu/bootstarter/logger/LoggerAutoConfiguration.class differ
diff --git a/target/classes/cn/waynechu/bootstarter/logger/appender/AmqpAppender$Event.class b/target/classes/cn/waynechu/bootstarter/logger/appender/AmqpAppender$Event.class
new file mode 100644
index 0000000..2a1aca2
Binary files /dev/null and b/target/classes/cn/waynechu/bootstarter/logger/appender/AmqpAppender$Event.class differ
diff --git a/target/classes/cn/waynechu/bootstarter/logger/appender/AmqpAppender$EventSender$1.class b/target/classes/cn/waynechu/bootstarter/logger/appender/AmqpAppender$EventSender$1.class
new file mode 100644
index 0000000..288ac65
Binary files /dev/null and b/target/classes/cn/waynechu/bootstarter/logger/appender/AmqpAppender$EventSender$1.class differ
diff --git a/target/classes/cn/waynechu/bootstarter/logger/appender/AmqpAppender$EventSender.class b/target/classes/cn/waynechu/bootstarter/logger/appender/AmqpAppender$EventSender.class
new file mode 100644
index 0000000..fd798d7
Binary files /dev/null and b/target/classes/cn/waynechu/bootstarter/logger/appender/AmqpAppender$EventSender.class differ
diff --git a/target/classes/cn/waynechu/bootstarter/logger/appender/AmqpAppender.class b/target/classes/cn/waynechu/bootstarter/logger/appender/AmqpAppender.class
new file mode 100644
index 0000000..cc7146f
Binary files /dev/null and b/target/classes/cn/waynechu/bootstarter/logger/appender/AmqpAppender.class differ
diff --git a/target/classes/cn/waynechu/bootstarter/logger/aware/SentryContextAware.class b/target/classes/cn/waynechu/bootstarter/logger/aware/SentryContextAware.class
new file mode 100644
index 0000000..8622c4f
Binary files /dev/null and b/target/classes/cn/waynechu/bootstarter/logger/aware/SentryContextAware.class differ
diff --git a/target/classes/cn/waynechu/bootstarter/logger/constant/TraceKeyConstant.class b/target/classes/cn/waynechu/bootstarter/logger/constant/TraceKeyConstant.class
new file mode 100644
index 0000000..d64e386
Binary files /dev/null and b/target/classes/cn/waynechu/bootstarter/logger/constant/TraceKeyConstant.class differ
diff --git a/target/classes/cn/waynechu/bootstarter/logger/filter/MDCFilter.class b/target/classes/cn/waynechu/bootstarter/logger/filter/MDCFilter.class
new file mode 100644
index 0000000..9eb483a
Binary files /dev/null and b/target/classes/cn/waynechu/bootstarter/logger/filter/MDCFilter.class differ
diff --git a/target/classes/cn/waynechu/bootstarter/logger/filter/ModifyHttpServletRequestWrapper.class b/target/classes/cn/waynechu/bootstarter/logger/filter/ModifyHttpServletRequestWrapper.class
new file mode 100644
index 0000000..afe9ef1
Binary files /dev/null and b/target/classes/cn/waynechu/bootstarter/logger/filter/ModifyHttpServletRequestWrapper.class differ
diff --git a/target/classes/cn/waynechu/bootstarter/logger/layout/RabbitmqLayout.class b/target/classes/cn/waynechu/bootstarter/logger/layout/RabbitmqLayout.class
new file mode 100644
index 0000000..cce308f
Binary files /dev/null and b/target/classes/cn/waynechu/bootstarter/logger/layout/RabbitmqLayout.class differ
diff --git a/target/classes/cn/waynechu/bootstarter/logger/properties/ElkProperty.class b/target/classes/cn/waynechu/bootstarter/logger/properties/ElkProperty.class
new file mode 100644
index 0000000..87fa21a
Binary files /dev/null and b/target/classes/cn/waynechu/bootstarter/logger/properties/ElkProperty.class differ
diff --git a/target/classes/cn/waynechu/bootstarter/logger/properties/LoggerProperty.class b/target/classes/cn/waynechu/bootstarter/logger/properties/LoggerProperty.class
new file mode 100644
index 0000000..f873232
Binary files /dev/null and b/target/classes/cn/waynechu/bootstarter/logger/properties/LoggerProperty.class differ
diff --git a/target/classes/cn/waynechu/bootstarter/logger/properties/SentryProperties.class b/target/classes/cn/waynechu/bootstarter/logger/properties/SentryProperties.class
new file mode 100644
index 0000000..c30284a
Binary files /dev/null and b/target/classes/cn/waynechu/bootstarter/logger/properties/SentryProperties.class differ
diff --git a/target/classes/cn/waynechu/bootstarter/logger/properties/nested/KafkaProperty.class b/target/classes/cn/waynechu/bootstarter/logger/properties/nested/KafkaProperty.class
new file mode 100644
index 0000000..7a18c0e
Binary files /dev/null and b/target/classes/cn/waynechu/bootstarter/logger/properties/nested/KafkaProperty.class differ
diff --git a/target/classes/cn/waynechu/bootstarter/logger/properties/nested/RabbitmqProperty.class b/target/classes/cn/waynechu/bootstarter/logger/properties/nested/RabbitmqProperty.class
new file mode 100644
index 0000000..2d150ad
Binary files /dev/null and b/target/classes/cn/waynechu/bootstarter/logger/properties/nested/RabbitmqProperty.class differ
diff --git a/target/classes/cn/waynechu/bootstarter/logger/provider/ApplicationProvider.class b/target/classes/cn/waynechu/bootstarter/logger/provider/ApplicationProvider.class
new file mode 100644
index 0000000..15ee291
Binary files /dev/null and b/target/classes/cn/waynechu/bootstarter/logger/provider/ApplicationProvider.class differ
diff --git a/target/classes/logback-spring.xml b/target/classes/logback-spring.xml
new file mode 100644
index 0000000..c00147e
--- /dev/null
+++ b/target/classes/logback-spring.xml
@@ -0,0 +1,155 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ${CONSOLE_LOG_PATTERN}
+
+
+
+
+
+
+
+
+
+ ERROR
+
+
+
+
+
+
+
+
+
+
+
+ ${elkRabbitmqHost}
+ ${elkRabbitmqPort}
+ ${elkRabbitmqUsername}
+ ${elkRabbitmqPassword}
+ ${elkRabbitmqApplicationId}
+ ${elkRabbitmqVirtualHost}
+ ${elkRabbitmqExchange}
+ topic
+ true
+ ${elkRabbitmqRoutingKey}
+ false
+ true
+ true
+ PERSISTENT
+ UTF-8
+ text/json
+ ${elkRabbitmqConnectionName}
+
+
+
+
+
+
+
+
+
+
+
+
+ INFO
+
+
+ ${elkKafkaTopic}
+
+
+
+
+
+
+
+
+
+ bootstrap.servers=${elkKafkaHost}:${elkKafkaPort}
+ buffer.memory=${elkKafkaBufferMemory}
+ acks=${elkKafkaAcks}
+ linger.ms=${elkKafkaLingerMs}
+ max.block.ms=${elkKafkaMaxBlockMs}
+ compression.type=${elkKafkaCompressionType}
+ retries=${elkKafkaRetries}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties
new file mode 100644
index 0000000..b9b5eaf
--- /dev/null
+++ b/target/maven-archiver/pom.properties
@@ -0,0 +1,3 @@
+artifactId=biz-boot-starter-logger
+groupId=cn.waynechu
+version=1.0.0-RELEASE
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
new file mode 100644
index 0000000..3065248
--- /dev/null
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -0,0 +1,17 @@
+cn\waynechu\bootstarter\logger\constant\TraceKeyConstant.class
+cn\waynechu\bootstarter\logger\layout\RabbitmqLayout.class
+cn\waynechu\bootstarter\logger\properties\SentryProperties.class
+cn\waynechu\bootstarter\logger\appender\AmqpAppender$EventSender.class
+cn\waynechu\bootstarter\logger\properties\nested\KafkaProperty.class
+META-INF\spring-configuration-metadata.json
+cn\waynechu\bootstarter\logger\filter\ModifyHttpServletRequestWrapper.class
+cn\waynechu\bootstarter\logger\appender\AmqpAppender$Event.class
+cn\waynechu\bootstarter\logger\provider\ApplicationProvider.class
+cn\waynechu\bootstarter\logger\filter\MDCFilter.class
+cn\waynechu\bootstarter\logger\appender\AmqpAppender.class
+cn\waynechu\bootstarter\logger\properties\LoggerProperty.class
+cn\waynechu\bootstarter\logger\properties\nested\RabbitmqProperty.class
+cn\waynechu\bootstarter\logger\appender\AmqpAppender$EventSender$1.class
+cn\waynechu\bootstarter\logger\LoggerAutoConfiguration.class
+cn\waynechu\bootstarter\logger\properties\ElkProperty.class
+cn\waynechu\bootstarter\logger\aware\SentryContextAware.class
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
new file mode 100644
index 0000000..5b159d4
--- /dev/null
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -0,0 +1,13 @@
+D:\workspace\biz-parent\biz-boot-starter-logger\src\main\java\cn\waynechu\bootstarter\logger\LoggerAutoConfiguration.java
+D:\workspace\biz-parent\biz-boot-starter-logger\src\main\java\cn\waynechu\bootstarter\logger\properties\ElkProperty.java
+D:\workspace\biz-parent\biz-boot-starter-logger\src\main\java\cn\waynechu\bootstarter\logger\aware\SentryContextAware.java
+D:\workspace\biz-parent\biz-boot-starter-logger\src\main\java\cn\waynechu\bootstarter\logger\filter\MDCFilter.java
+D:\workspace\biz-parent\biz-boot-starter-logger\src\main\java\cn\waynechu\bootstarter\logger\filter\ModifyHttpServletRequestWrapper.java
+D:\workspace\biz-parent\biz-boot-starter-logger\src\main\java\cn\waynechu\bootstarter\logger\provider\ApplicationProvider.java
+D:\workspace\biz-parent\biz-boot-starter-logger\src\main\java\cn\waynechu\bootstarter\logger\appender\AmqpAppender.java
+D:\workspace\biz-parent\biz-boot-starter-logger\src\main\java\cn\waynechu\bootstarter\logger\constant\TraceKeyConstant.java
+D:\workspace\biz-parent\biz-boot-starter-logger\src\main\java\cn\waynechu\bootstarter\logger\layout\RabbitmqLayout.java
+D:\workspace\biz-parent\biz-boot-starter-logger\src\main\java\cn\waynechu\bootstarter\logger\properties\SentryProperties.java
+D:\workspace\biz-parent\biz-boot-starter-logger\src\main\java\cn\waynechu\bootstarter\logger\properties\nested\KafkaProperty.java
+D:\workspace\biz-parent\biz-boot-starter-logger\src\main\java\cn\waynechu\bootstarter\logger\properties\nested\RabbitmqProperty.java
+D:\workspace\biz-parent\biz-boot-starter-logger\src\main\java\cn\waynechu\bootstarter\logger\properties\LoggerProperty.java