netty 客户端发送消息服务端收到消息无法打印,springBoot配合 lombok使用@Slf4j
netty 客户端发送消息服务端收到消息无法打印,springBoot配合 lombok使用@Slf4j
服务端代码
@Slf4j
public class EventLoopServer {public static void main(String[] args) throws InterruptedException {new ServerBootstrap().group(new NioEventLoopGroup()).channel(NioServerSocketChannel.class).childHandler(new ChannelInitializer<NioSocketChannel>() {@Overrideprotected void initChannel(NioSocketChannel ch) throws Exception {log.debug("connecting...");ch.pipeline().addLast(new ChannelInboundHandlerAdapter() {@Overridepublic void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {log.debug("receive");ByteBuf byteBuf = msg instanceof ByteBuf ? ((ByteBuf) msg) : null;if (byteBuf != null) {byte[] buf = new byte[16];byteBuf.readBytes(buf, 0, byteBuf.readableBytes());log.debug(new String(buf));}}});}}).bind(8080).sync();log.debug("ok");}
}
客户端代码
@Slf4j
public class EventLoopClient {public static void main(String[] args) throws InterruptedException {Channel channel = new Bootstrap().group(new NioEventLoopGroup()).channel(NioSocketChannel.class).handler(new ChannelInitializer<NioSocketChannel>() {@Overrideprotected void initChannel(NioSocketChannel nioSocketChannel) throws Exception {System.out.println("init...");nioSocketChannel.pipeline().addLast(new StringEncoder()); //将字符编码后发送}}).connect(new InetSocketAddress("localhost", 8080)).sync().channel();//channel.writeAndFlush(Unpooled.buffer().writeBytes("hello".getBytes(StandardCharsets.UTF_8)));channel.writeAndFlush("hello");System.out.println(channel);System.out.println("a");}
}
此时客户端发送成功,但是服务端没有打印信息,经过调试发现,原因是 springboot默认的日志级别是info,所以debug日志不打印,所以需要配置日志
引入Lombok依赖
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency>
引入插件
<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><excludes><exclude><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></exclude></excludes></configuration></plugin></plugins></build>
添加配置
#日志配置
logging:config: classpath:logback-spring.xml #指定项目启动的时,读取logback-spring.xml日志配置文件,文件名最好不要使用logback.xmllevel: #配置指定包的路径下应用程序的日志记录和日志级别。root: infospringfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator: errororg.springframework: warnfile:path: D:\sinux_2023\project\phm\724_3\exe\logs #设置日志输出路径name: phm.log #设置日志文件的名称
此时会报错
需要编写配置文件
编写log4j.properties文件
log4j.rootLogger=DEBUG,CONSOLE,file
#log4j.rootLogger=ERROR,ROLLING_FILE######################################################################################
# Console Appender \u65E5\u5FD7\u5728\u63A7\u5236\u8F93\u51FA\u914D\u7F6E
######################################################################################
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=error
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern= [%p] %d %c - %m%n######################################################################################
# DailyRolling File \u6BCF\u5929\u4EA7\u751F\u4E00\u4E2A\u65E5\u5FD7\u6587\u4EF6\uFF0C\u6587\u4EF6\u540D\u683C\u5F0F:log2009-09-11
######################################################################################
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.DatePattern=yyyy-MM-dd
log4j.appender.file.File=log.log
log4j.appender.file.Append=true
log4j.appender.file.Threshold=error
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-M-d HH:mm:ss}%x[%5p](%F:%L) %m%nlog4j.logger.com.opensymphony.xwork2=error
此时就可以正常打印debug日志了