From 9d7b6ad72eb473bdb1ec7c6f41f1e52607e7dfcb Mon Sep 17 00:00:00 2001 From: byteblogs168 <598092184@qq.com> Date: Fri, 22 Mar 2024 16:10:43 +0800 Subject: [PATCH] =?UTF-8?q?feat:=203.2.0=20=E5=AE=9E=E6=97=B6=E6=97=A5?= =?UTF-8?q?=E5=BF=97=E6=B7=BB=E5=8A=A0=20ip=E5=92=8C=E7=AB=AF=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../appender/EasyRetryLog4j2Appender.java | 3 ++ .../appender/EasyRetryLog4jAppender.java | 3 ++ .../appender/EasyRetryLogbackAppender.java | 3 ++ .../client/common/netty/NettyChannel.java | 51 ++++++++++++++----- .../log/constant/LogFieldConstants.java | 2 + .../retry/common/log/dto/LogContentDTO.java | 8 +++ .../EasyRetryServerLogbackAppender.java | 5 ++ 7 files changed, 62 insertions(+), 13 deletions(-) diff --git a/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/appender/EasyRetryLog4j2Appender.java b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/appender/EasyRetryLog4j2Appender.java index 14992e0bb..b92e456e8 100644 --- a/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/appender/EasyRetryLog4j2Appender.java +++ b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/appender/EasyRetryLog4j2Appender.java @@ -2,6 +2,7 @@ package com.aizuda.easy.retry.client.common.appender; import com.aizuda.easy.retry.client.common.log.report.LogReportFactory; import com.aizuda.easy.retry.client.common.log.support.EasyRetryLogManager; +import com.aizuda.easy.retry.client.common.netty.NettyChannel; import com.aizuda.easy.retry.common.log.dto.LogContentDTO; import com.aizuda.easy.retry.common.log.constant.LogFieldConstants; import org.apache.log4j.MDC; @@ -44,6 +45,8 @@ public class EasyRetryLog4j2Appender extends AbstractAppender { logContentDTO.addLocationField(getLocationField(event)); logContentDTO.addThrowableField(getThrowableField(event)); logContentDTO.addMessageField(event.getMessage().getFormattedMessage()); + logContentDTO.addHostField(NettyChannel.getClientHost()); + logContentDTO.addPortField(NettyChannel.getClientPort()); // slidingWindow syncReportLog Optional.ofNullable(LogReportFactory.get()).ifPresent(logReport -> logReport.report(logContentDTO)); diff --git a/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/appender/EasyRetryLog4jAppender.java b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/appender/EasyRetryLog4jAppender.java index 2f8b504eb..78591d68d 100644 --- a/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/appender/EasyRetryLog4jAppender.java +++ b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/appender/EasyRetryLog4jAppender.java @@ -2,6 +2,7 @@ package com.aizuda.easy.retry.client.common.appender; import com.aizuda.easy.retry.client.common.log.report.LogReportFactory; import com.aizuda.easy.retry.client.common.log.support.EasyRetryLogManager; +import com.aizuda.easy.retry.client.common.netty.NettyChannel; import com.aizuda.easy.retry.common.log.dto.LogContentDTO; import com.aizuda.easy.retry.common.log.constant.LogFieldConstants; import org.apache.log4j.AppenderSkeleton; @@ -40,6 +41,8 @@ public class EasyRetryLog4jAppender extends AppenderSkeleton { logContentDTO.addMessageField(event.getMessage().toString()); logContentDTO.addLocationField(event.getLocationInformation().fullInfo); logContentDTO.addThrowableField(getThrowableField(event)); + logContentDTO.addHostField(NettyChannel.getClientHost()); + logContentDTO.addPortField(NettyChannel.getClientPort()); // slidingWindow syncReportLog Optional.ofNullable(LogReportFactory.get()).ifPresent(logReport -> logReport.report(logContentDTO)); diff --git a/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/appender/EasyRetryLogbackAppender.java b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/appender/EasyRetryLogbackAppender.java index 35ac3e670..59ca1338d 100644 --- a/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/appender/EasyRetryLogbackAppender.java +++ b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/appender/EasyRetryLogbackAppender.java @@ -8,6 +8,7 @@ import ch.qos.logback.core.CoreConstants; import ch.qos.logback.core.UnsynchronizedAppenderBase; import com.aizuda.easy.retry.client.common.log.report.LogReportFactory; import com.aizuda.easy.retry.client.common.log.support.EasyRetryLogManager; +import com.aizuda.easy.retry.client.common.netty.NettyChannel; import com.aizuda.easy.retry.common.log.dto.LogContentDTO; import com.aizuda.easy.retry.common.log.constant.LogFieldConstants; import org.slf4j.MDC; @@ -50,6 +51,8 @@ public class EasyRetryLogbackAppender extends UnsynchronizedAppenderBase { logContentDTO.addMessageField(event.getFormattedMessage()); logContentDTO.addLocationField(getLocationField(event)); logContentDTO.addThrowableField(getThrowableField(event)); + logContentDTO.addHostField(NettyChannel.getClientHost()); + logContentDTO.addPortField(NettyChannel.getClientPort()); // slidingWindow syncReportLog Optional.ofNullable(LogReportFactory.get()).ifPresent(logReport -> logReport.report(logContentDTO)); diff --git a/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/netty/NettyChannel.java b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/netty/NettyChannel.java index f9f335a58..f3520fa31 100644 --- a/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/netty/NettyChannel.java +++ b/easy-retry-client/easy-retry-client-common/src/main/java/com/aizuda/easy/retry/client/common/netty/NettyChannel.java @@ -97,6 +97,42 @@ public class NettyChannel { return System.getProperty(EASY_RETRY_SERVER_HOST); } + /** + * 获取指定的客户IP + * + * @return 客户端IP + */ + public static String getClientHost() { + EasyRetryProperties easyRetryProperties = SpringContext.CONTEXT.getBean(EasyRetryProperties.class); + + String host = easyRetryProperties.getHost(); + // 获取客户端指定的IP地址 + if (StrUtil.isBlank(host)) { + host = HOST; + } + + return host; + } + + /** + * 获取客户端端口 + * + * @return port 端口 + */ + public static Integer getClientPort() { + EasyRetryProperties easyRetryProperties = SpringContext.CONTEXT.getBean(EasyRetryProperties.class); + ServerProperties serverProperties = SpringContext.CONTEXT.getBean(ServerProperties.class); + + Integer port = easyRetryProperties.getPort(); + // 获取客户端指定的端口 + if (Objects.isNull(port)) { + port = Optional.ofNullable(serverProperties.getPort()).orElse(PORT); + } + + return port; + } + + public static void setChannel(Channel channel) { NettyChannel.CHANNEL = channel; } @@ -130,17 +166,6 @@ public class NettyChannel { return; } - Integer port = easyRetryProperties.getPort(); - // 获取客户端指定的端口 - if (Objects.isNull(port)) { - port = Optional.ofNullable(serverProperties.getPort()).orElse(PORT); - } - - String host = easyRetryProperties.getHost(); - // 获取客户端指定的IP地址 - if (StrUtil.isBlank(host)) { - host = HOST; - } request.headers() .set(HttpHeaderNames.CONTENT_TYPE, HttpHeaderValues.APPLICATION_JSON) @@ -149,10 +174,10 @@ public class NettyChannel { //设置传递请求内容的长度 .set(HttpHeaderNames.CONTENT_LENGTH, request.content().readableBytes()) .set(HeadersEnum.HOST_ID.getKey(), HOST_ID) - .set(HeadersEnum.HOST_IP.getKey(), host) + .set(HeadersEnum.HOST_IP.getKey(), getClientHost()) .set(HeadersEnum.GROUP_NAME.getKey(), EasyRetryProperties.getGroup()) .set(HeadersEnum.CONTEXT_PATH.getKey(), Optional.ofNullable(serverProperties.getServlet().getContextPath()).orElse("/")) - .set(HeadersEnum.HOST_PORT.getKey(), port) + .set(HeadersEnum.HOST_PORT.getKey(), getClientPort()) .set(HeadersEnum.VERSION.getKey(), GroupVersionCache.getVersion()) .set(HeadersEnum.HOST.getKey(), serverConfig.getHost()) .set(HeadersEnum.NAMESPACE.getKey(), Optional.ofNullable(easyRetryProperties.getNamespace()).orElse( diff --git a/easy-retry-common/easy-retry-common-log/src/main/java/com/aizuda/easy/retry/common/log/constant/LogFieldConstants.java b/easy-retry-common/easy-retry-common-log/src/main/java/com/aizuda/easy/retry/common/log/constant/LogFieldConstants.java index b13882a8d..822590e50 100644 --- a/easy-retry-common/easy-retry-common-log/src/main/java/com/aizuda/easy/retry/common/log/constant/LogFieldConstants.java +++ b/easy-retry-common/easy-retry-common-log/src/main/java/com/aizuda/easy/retry/common/log/constant/LogFieldConstants.java @@ -15,5 +15,7 @@ public interface LogFieldConstants { String LEVEL = "level"; String LOCATION = "location"; String THROWABLE = "throwable"; + String HOST = "host"; + String PORT = "port"; } diff --git a/easy-retry-common/easy-retry-common-log/src/main/java/com/aizuda/easy/retry/common/log/dto/LogContentDTO.java b/easy-retry-common/easy-retry-common-log/src/main/java/com/aizuda/easy/retry/common/log/dto/LogContentDTO.java index e482cb812..a5912ebfd 100644 --- a/easy-retry-common/easy-retry-common-log/src/main/java/com/aizuda/easy/retry/common/log/dto/LogContentDTO.java +++ b/easy-retry-common/easy-retry-common-log/src/main/java/com/aizuda/easy/retry/common/log/dto/LogContentDTO.java @@ -66,4 +66,12 @@ public class LogContentDTO { this.addField(LogFieldConstants.THROWABLE, throwable); } + public void addHostField(String host) { + this.addField(LogFieldConstants.HOST, host); + } + + public void addPortField(Integer port) { + this.addField(LogFieldConstants.PORT, String.valueOf(port)); + } + } diff --git a/easy-retry-server/easy-retry-server-common/src/main/java/com/aizuda/easy/retry/server/common/appender/EasyRetryServerLogbackAppender.java b/easy-retry-server/easy-retry-server-common/src/main/java/com/aizuda/easy/retry/server/common/appender/EasyRetryServerLogbackAppender.java index 5453eed42..cc861327c 100644 --- a/easy-retry-server/easy-retry-server-common/src/main/java/com/aizuda/easy/retry/server/common/appender/EasyRetryServerLogbackAppender.java +++ b/easy-retry-server/easy-retry-server-common/src/main/java/com/aizuda/easy/retry/server/common/appender/EasyRetryServerLogbackAppender.java @@ -7,11 +7,14 @@ import ch.qos.logback.classic.spi.ThrowableProxyUtil; import ch.qos.logback.core.CoreConstants; import ch.qos.logback.core.UnsynchronizedAppenderBase; import cn.hutool.core.util.StrUtil; +import com.aizuda.easy.retry.common.core.context.SpringContext; import com.aizuda.easy.retry.common.core.util.JsonUtil; +import com.aizuda.easy.retry.common.core.util.NetUtil; import com.aizuda.easy.retry.common.log.EasyRetryLog; import com.aizuda.easy.retry.common.log.constant.LogFieldConstants; import com.aizuda.easy.retry.common.log.dto.LogContentDTO; import com.aizuda.easy.retry.server.common.LogStorage; +import com.aizuda.easy.retry.server.common.config.SystemProperties; import com.aizuda.easy.retry.server.common.dto.LogMetaDTO; import com.aizuda.easy.retry.server.common.log.LogStorageFactory; import org.slf4j.MDC; @@ -47,6 +50,8 @@ public class EasyRetryServerLogbackAppender extends UnsynchronizedAppenderBas logContentDTO.addThreadField(event.getThreadName()); logContentDTO.addLocationField(getLocationField(event)); logContentDTO.addThrowableField(getThrowableField(event)); + logContentDTO.addHostField(NetUtil.getLocalIpStr()); + logContentDTO.addPortField(SpringContext.getBean(SystemProperties.class).getNettyPort()); LogMetaDTO logMetaDTO = null; try {