想要使用@Slf4j需要导入lombok依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
<scope>provided</scope>
</dependency>
@Slf4j注解是log4j2依赖提供的,@Slf4j是用作日志输出的,一般会在项目每个类的开头加入上该注解。如果不想创建Logger对象,并且想用log.info( ) 打印日志,就可以使用该注解。
在类上添加了@Slf4j注解之后,就可以在代码中直接饮用log.info( ) 打印日志了。
注:log.info( ) 打印日志会直接将信息输出到控制台上。
@Slf4j
public class NettyServerHandler extends ChannelInboundHandlerAdapter {
......
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
//将信息写入日志中
log.info("加载客户端报文......");
log.info("【" + ctx.channel().id() + "】" + " :" + msg);
/**
* 下面可以解析数据,保存数据,生成返回报文,将需要返回报文写入write函数
*
*/
//System.out.println("接收数据------------");
//ByteBuf是Netty提供的,不是NIO的ByteBuffer
ByteBuf buf = (ByteBuf) msg;
//将接收的ByteBuf字节数组按指定解码格式解码转换为String
System.out.println("客户端发送的消息:"+buf.toString(CharsetUtil.UTF_8));
System.out.println("客户端地址:"+ctx.channel().remoteAddress());
}
......
}
该注解的作用:
**
该注解的作用主要是操作在idea中的控制台中打印的日志信息。该注解相当于代替了以下的代码:
private final Logger logger = LoggerFactory.getLogger(当前类名.class);
具体如下:
而private final Logger logger = LoggerFactory.getLogger(当前类名.class);该行代码的作用是什么?
@Slf4j的注解相当于private final Logger logger = LoggerFactory.getLogger(当前类名.class);
则代码的作用是一致的:就是使用指定类初始化日志对象,在日志输出的时候,可以打印出日志信息所在的类。
日志文件等级
通常使用到的为上图几种等级,他们分别代表的是:
trace:很低的日志级别,一般不会使用(当使用该日志级别时,会将其以上级别一同打印)
debug:指出细粒度信息事件对调试应用程序是非常有帮助的,主要用于开发过程中打印一些运行信息。(当使用该日志级别时,会将其以上级别一同打印)
info:消息在粗粒度级别上突出强调应用程序的运行过程。打印一些你感兴趣或者重要的信息,这个可以用于生产程序运行中的一些重要信息,但是不能滥用瞎用,避免打印过多的日志。(当使用该日志级别时,会将其以上级别一同打印)
warn:表明会出现的潜在错误的情形,有些信息不是错误信息,但是也要给程序猿一些提示。(当使用该日志级别时,会将其以上级别一同打印)
error:指出虽然发生错误事件,但是仍然不影响系统的继续运行,打印错误和异常信息,如果不想输出特别多的日志信息,则可以考虑使用该级别。(当使用该日志级别时,会将其以上级别一同打印)
fatal:指出每个严重的错误事件,将会导致应用程序的退出,这个级别比较高。重大错误,这种错误可以直接停止程序。