diff --git a/README.md b/README.md index 7c45bfb..7c285ac 100644 --- a/README.md +++ b/README.md @@ -152,6 +152,12 @@ https://www.yuque.com/yuanfangxiyang/ma4ytb/vvy3iz/edit#nnzKN 3.修改部分问题 +------------------------------------------------------------------------------------------- +版本:4.2.8/时间:2024-10-18 + +1.服务端SDK可以设置自定义日志处理器,可自行过滤不需要打印的日志 + + ## Maven Gradle 服务端sdk引用 @@ -161,7 +167,7 @@ https://www.yuque.com/yuanfangxiyang/ma4ytb/vvy3iz/edit#nnzKN com.farsunset cim-server-sdk-netty - 4.2.7 + 4.2.8 ``` diff --git a/cim-boot-server/pom.xml b/cim-boot-server/pom.xml index e2c0a31..86000ee 100644 --- a/cim-boot-server/pom.xml +++ b/cim-boot-server/pom.xml @@ -17,6 +17,7 @@ 1.8 + 4.2.8 4.1.79.Final 3.21.5 8.0.30 @@ -67,7 +68,7 @@ com.farsunset cim-server-sdk-netty - 4.2.7 + ${cim.server.sdk.version} org.apache.commons diff --git a/cim-boot-server/src/main/java/com/farsunset/cim/component/logger/CIMEventLogger.java b/cim-boot-server/src/main/java/com/farsunset/cim/component/logger/CIMEventLogger.java new file mode 100644 index 0000000..4ba5599 --- /dev/null +++ b/cim-boot-server/src/main/java/com/farsunset/cim/component/logger/CIMEventLogger.java @@ -0,0 +1,65 @@ +package com.farsunset.cim.component.logger; + +import com.farsunset.cim.handler.LoggingHandler; +import com.farsunset.cim.model.Ping; +import com.farsunset.cim.model.Pong; +import io.netty.channel.ChannelHandler; +import io.netty.channel.ChannelHandlerContext; +import io.netty.channel.ChannelPromise; +import org.springframework.stereotype.Component; + +/** + * 自定义 CIM事件日志打印,重写方法时注意需要有以下2种之一!!! + * 1、调用对应的ctx.fireXX(msg)方法; + * 2、调用supper + */ +@ChannelHandler.Sharable +@Component +public class CIMEventLogger extends LoggingHandler { + + /** + * 不打印客户端发送的Pong日志 + * @param ctx + * @param msg + * @throws Exception + */ + @Override + public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception { + + if (msg instanceof Pong){ + ctx.fireChannelRead(msg); + return; + } + + super.channelRead(ctx,msg); + } + + + /** + * 不打印服务端发送的Ping日志 + * @param ctx + * @param msg + * @throws Exception + */ + @Override + public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception { + + if (msg instanceof Ping){ + ctx.write(msg, promise); + return; + } + + super.write(ctx,msg,promise); + } + + /** + * 不打长连接空闲事件日志 + * @param ctx + * @param evt + */ + @Override + public void userEventTriggered(ChannelHandlerContext ctx, Object evt) { + ctx.fireUserEventTriggered(evt); + } + +} diff --git a/cim-boot-server/src/main/java/com/farsunset/cim/config/CIMConfig.java b/cim-boot-server/src/main/java/com/farsunset/cim/config/CIMConfig.java index 9b8f505..3cfac27 100644 --- a/cim-boot-server/src/main/java/com/farsunset/cim/config/CIMConfig.java +++ b/cim-boot-server/src/main/java/com/farsunset/cim/config/CIMConfig.java @@ -26,6 +26,7 @@ import com.farsunset.cim.acceptor.WebsocketAcceptor; import com.farsunset.cim.acceptor.config.SocketConfig; import com.farsunset.cim.acceptor.config.WebsocketConfig; import com.farsunset.cim.component.handler.annotation.CIMHandler; +import com.farsunset.cim.component.logger.CIMEventLogger; import com.farsunset.cim.component.predicate.AuthPredicate; import com.farsunset.cim.config.properties.APNsProperties; import com.farsunset.cim.config.properties.CIMAppSocketProperties; @@ -76,7 +77,7 @@ public class CIMConfig implements CIMRequestHandler, ApplicationListenercom.farsunset cim-server-sdk-netty - 4.2.7 + 4.2.8 jar ${project.groupId}:${project.artifactId} diff --git a/cim-server-sdk/src/main/java/com/farsunset/cim/acceptor/AppSocketAcceptor.java b/cim-server-sdk/src/main/java/com/farsunset/cim/acceptor/AppSocketAcceptor.java index 6fce197..f9b90d0 100644 --- a/cim-server-sdk/src/main/java/com/farsunset/cim/acceptor/AppSocketAcceptor.java +++ b/cim-server-sdk/src/main/java/com/farsunset/cim/acceptor/AppSocketAcceptor.java @@ -63,7 +63,7 @@ public class AppSocketAcceptor extends NioSocketAcceptor { public void initChannel(SocketChannel ch){ ch.pipeline().addLast(new AppMessageDecoder()); ch.pipeline().addLast(new AppMessageEncoder()); - ch.pipeline().addLast(loggingHandler); + ch.pipeline().addLast(socketConfig.getLoggingHandler() == null ? defaultLoggingHandler : socketConfig.getLoggingHandler() ); ch.pipeline().addLast(new IdleStateHandler(socketConfig.getReadIdle().getSeconds(), socketConfig.getWriteIdle().getSeconds(), 0, TimeUnit.SECONDS)); ch.pipeline().addLast(AppSocketAcceptor.this); } diff --git a/cim-server-sdk/src/main/java/com/farsunset/cim/acceptor/NioSocketAcceptor.java b/cim-server-sdk/src/main/java/com/farsunset/cim/acceptor/NioSocketAcceptor.java index 920bda8..9c20ffb 100644 --- a/cim-server-sdk/src/main/java/com/farsunset/cim/acceptor/NioSocketAcceptor.java +++ b/cim-server-sdk/src/main/java/com/farsunset/cim/acceptor/NioSocketAcceptor.java @@ -44,7 +44,7 @@ abstract class NioSocketAcceptor extends SimpleChannelInboundHandler{ protected final Logger logger = LoggerFactory.getLogger(getClass()); - protected final ChannelHandler loggingHandler = new LoggingHandler(); + protected final ChannelHandler defaultLoggingHandler = new LoggingHandler(); protected final SocketConfig socketConfig; diff --git a/cim-server-sdk/src/main/java/com/farsunset/cim/acceptor/WebsocketAcceptor.java b/cim-server-sdk/src/main/java/com/farsunset/cim/acceptor/WebsocketAcceptor.java index 2572d63..d30fd84 100644 --- a/cim-server-sdk/src/main/java/com/farsunset/cim/acceptor/WebsocketAcceptor.java +++ b/cim-server-sdk/src/main/java/com/farsunset/cim/acceptor/WebsocketAcceptor.java @@ -107,7 +107,7 @@ public class WebsocketAcceptor extends NioSocketAcceptor { ch.pipeline().addLast(new WebMessageEncoder()); } ch.pipeline().addLast(new IdleStateHandler(config.getReadIdle().getSeconds(), config.getWriteIdle().getSeconds(), 0, TimeUnit.SECONDS)); - ch.pipeline().addLast(loggingHandler); + ch.pipeline().addLast(socketConfig.getLoggingHandler() == null ? defaultLoggingHandler : socketConfig.getLoggingHandler() ); ch.pipeline().addLast(WebsocketAcceptor.this); ch.pipeline().addLast(illegalRequestHandler); } diff --git a/cim-server-sdk/src/main/java/com/farsunset/cim/acceptor/config/SocketConfig.java b/cim-server-sdk/src/main/java/com/farsunset/cim/acceptor/config/SocketConfig.java index 020a6d4..6cf1dda 100644 --- a/cim-server-sdk/src/main/java/com/farsunset/cim/acceptor/config/SocketConfig.java +++ b/cim-server-sdk/src/main/java/com/farsunset/cim/acceptor/config/SocketConfig.java @@ -22,6 +22,7 @@ package com.farsunset.cim.acceptor.config; import com.farsunset.cim.handler.CIMRequestHandler; +import com.farsunset.cim.handler.LoggingHandler; import java.time.Duration; @@ -67,6 +68,13 @@ public class SocketConfig { */ private int maxPongTimeout = 1; + /** + * 自定义日志打印处理器,可不设置 + */ + + private LoggingHandler loggingHandler; + + public Integer getPort() { return port == null || port <= 0 ? DEFAULT_PORT : port; } @@ -87,6 +95,14 @@ public class SocketConfig { return enable; } + public void setLoggingHandler(LoggingHandler loggingHandler) { + this.loggingHandler = loggingHandler; + } + + public LoggingHandler getLoggingHandler() { + return loggingHandler; + } + public void setEnable(boolean enable) { this.enable = enable; } diff --git a/cim-server-sdk/src/main/java/com/farsunset/cim/acceptor/config/WebsocketConfig.java b/cim-server-sdk/src/main/java/com/farsunset/cim/acceptor/config/WebsocketConfig.java index 3966543..434547e 100644 --- a/cim-server-sdk/src/main/java/com/farsunset/cim/acceptor/config/WebsocketConfig.java +++ b/cim-server-sdk/src/main/java/com/farsunset/cim/acceptor/config/WebsocketConfig.java @@ -23,6 +23,7 @@ package com.farsunset.cim.acceptor.config; import com.farsunset.cim.auth.AuthPredicateInfo; import com.farsunset.cim.constant.WebsocketProtocol; +import com.farsunset.cim.handler.LoggingHandler; import java.util.function.Predicate; @@ -52,6 +53,12 @@ public class WebsocketConfig extends SocketConfig{ */ private Predicate authPredicate; + /** + * 自定义日志打印处理器,可不设置 + */ + + private LoggingHandler loggingHandler; + @Override public Integer getPort() { @@ -81,4 +88,12 @@ public class WebsocketConfig extends SocketConfig{ public Predicate getAuthPredicate() { return authPredicate; } + + public LoggingHandler getLoggingHandler() { + return loggingHandler; + } + + public void setLoggingHandler(LoggingHandler loggingHandler) { + this.loggingHandler = loggingHandler; + } }