千家信息网

SpringBoot中Log日志集成的示例分析

发表于:2024-11-27 作者:千家信息网编辑
千家信息网最后更新 2024年11月27日,这篇文章主要介绍SpringBoot中Log日志集成的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、日志的分类1、名字分类log4j :log for java (
千家信息网最后更新 2024年11月27日SpringBoot中Log日志集成的示例分析

这篇文章主要介绍SpringBoot中Log日志集成的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

    一、日志的分类

    1、名字分类

    • log4j :log for java (因为for和4读音差不多,所以交log4j)

    • logBack 日志说明

    注意:springBoot默认集成了logback日志

    2、日志分类

    根日志:全局日志 rootLogger( springboot的日志级别:info)

    子日志:包日志 logger

    3、日志级别

    OFF=》ERROR=》 WARNING=》INFO(springboot默认)=》DEBUG(mybatis默认级别)=》ALL级别越高输出信息越少

    日志级别由低到高: 日志级别越高输出的日志信息越少

    日志级别使用场景
    DEBUGdebug级别用来记录详细的信息,方便定位问题进行调试,在生产环境我们一般不开启DEBUG
    INFO用来记录关键代码点的信息,以便代码是否按照我们预期的执行,生产环境通常会设置INFO级别
    WARNING记录某些不预期发生的情况,如磁盘不足
    ERROR由于一个更严重的问题导致某些功能不能正常运行时记录的信息
    CRITICAL当发生严重错误,导致应用程序不能继续运行时记录的信息

    二、logback简介

    Logback是由log4j创始人设计的又一个开源日志组件。目前,logback分为三个模块:logback-core,logback-classic和logback-access。是对log4j日志展示进一步改进

    1、 项目中日志分类

    日志分为两类

    一种是rootLogger : 用来监听项目中所有的运行日志 包括引入依赖jar中的日志

    一种是logger : 用来监听项目中指定包中的日志信息

    2、 java项目中使用

    (1) logback配置文件

    logback的配置文件必须放在项目根目录中 且名字必须为logback.xml

                                                 [%p] %d{yyyy-MM-dd HH:mm:ss} %m %n                                        

    (2)具体类中使用日志

    @Controller@RequestMapping("user")public class UserController {    private Logger logger = org.slf4j.LoggerFactory.getLogger(this.getClass());    @RequestMapping("findAll")    public String findAll(String name) {        logger.debug("debug接收的姓名是: "+name);        logger.info("info接收的姓名是: "+name);        logger.warn("warn接收的姓名是: "+name);        logger.error("error接收的姓名是: "+name);        return "index";    }}

    (3)使用默认日志配置

    logging:  level:    root: debug    com.baizhi.dao: debug  path: /Users/whj/aa.log  file: bbb.log

    三、SpringBoot中日志使用

    1、将Springboot的日志默认级别改为debug

    #开启日志 如果级别:off(少)>error>warn>info>debug(多)>alllogging:  level:    root: debug    com.tjcu.controller: debug    com.tjcu.dao: debug

    注意:因为springboot如果使用debug作为日志打印的东西太多了,所以改用info为默认日志级别,但是mybatis等使用的是debug作为默认日志级别,所以我们需要兼顾他的日志隔离级别

    2、SpringBoot项目启动就会有一个默认的日志对象:logger

    先配置 com.tjcu.controller: debug

    #开启日志 logging:  level:    root: debug    com.tjcu.controller: debug

    controller里面使用日志对象

    @Controller@CrossOrigin@ResponseBodypublic class EmpController {    //在控制层定义日志对象    private static final Logger log = LoggerFactory.getLogger(EmpController.class);    @Autowired    private EmpService empService;    @RequestMapping("/emp/queryAll")    public  List queryall(){        List emps = empService.showEmp();        for (Emp emp : emps) {            log.debug(String.valueOf(emp));        }        return emps;    }

    前端访问后

    http://localhost:8080/ems/emp/queryAll

    控制台结果

    四、idea中使用日志插件简化开发

    1、下载Log Support2插件

    2、重启idea

    3、Settings里面会新增一个Log Support目录

    FrameWork框架选择slf4j

    我们为什么要使用slf4j

    我们自己的系统中使用了logback这个日志系统

    我们的系统使用了A.jar,A.jar中使用的日志系统为log4j

    我们的系统又使用了B.jar,B.jar中使用的日志系统为slf4j-simple

    这样,我们的系统就不得不同时支持并维护logback、log4j、slf4j-simple三种日志框架,非常不便。

    slf4j只是一个日志标准,并不是日志系统的具体实现 。理解这句话非常重要,slf4j只做两件事情:

    • 提供日志接口

    • 提供获取具体日志对象的方法

    4、如果直接使用Android的日志会冲突

    5、测试

    logd+enter(回车)后idea自动帮我们添加private static final Logger log1 = LoggerFactory.getLogger(EmpController.class);

    其中d代表debug,i代表info,w代表warn

    @Controller@CrossOrigin@ResponseBodypublic class EmpController {    private static final Logger log= LoggerFactory.getLogger(EmpController.class);    @Autowired    private EmpService empService;    @RequestMapping("/emp/queryAll")    public  List queryall(){        List emps = empService.showEmp();        for (Emp emp : emps) {            log.debug("");            log.info("");            log.warn("");        }        return emps;    }

    6、使用占位的方式书写日志而不用+号拼接

    {}代表占位,一个{}代表占位一个

    @Controller@CrossOrigin@ResponseBodypublic class EmpController {    private static final Logger log= LoggerFactory.getLogger(EmpController.class);    @Autowired    private EmpService empService;    @RequestMapping("/emp/queryAll")    public  List queryall(){        List emps = empService.showEmp();        for (Emp emp : emps) {            log.info("员工的信息 {} {}",emp,"这是占位");        }        return emps;    }

    以上是"SpringBoot中Log日志集成的示例分析"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

    0