【好奇害死猫】log.info的实现原理

本文探讨了log.info的实现原理,通过分析源码发现日志级别使用int标志,如OFF, ERROR, WARN, INFO, DEBUG, TRACE和ALL。日志输出的判断基于这些级别的比较。在日志框架中,一个名为""旋涡过滤器数组""的私有列表起到关键作用,但其初始化过程仍有待进一步探索。目前来看,日志是否打印取决于用户设置的日志级别和系统启动时的日志级别。最后,作者提出疑问关于这种复杂实现的原因,并认为深入研究源码是理解其奥秘的关键。" 135974202,19960945,C# ASP.NET旅游客服系统设计与实现 - 结合SQL Server与多模块管理,"['C#编程', 'ASP.NET框架', '数据库管理', '旅游行业', '系统开发', '毕业设计']
摘要由CSDN通过智能技术生成

写一个简单的类

package com.example.demo.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RequestMapping("test")
@RestController
@Slf4j
public class TTController {
    @RequestMapping("/log")
    public String getT() {
        log.info("log");
        return "success";
    }
}

引入注解@Slf4j编译之后查看class文件反编译,反编译文件如下:

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

package com.example.demo.controller;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RequestMapping({"test"})
@RestController
public class TTController {
    private static final Logger log = LoggerFactory.getLogger(TTController.class);

    public TTController() {
    }

    @RequestMapping({"/log"})
    public String getT() {
        log.info("log");
        return "success";
    }
}

发现lombok 使用APT技术已经生成了private static final Logger log = LoggerFactory.getLogger(TTController.class);
在这里插入图片描述
查看info的实现的时候发现有多个实现点击F7 进入发现进入的是Logger实现

public final class Logger implements org.slf4j.Logger, LocationAwareLogger, AppenderAttachable<ILoggingEvent>, Serializable {

实现逻辑如下:

<
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陌路Molu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值