图文详解SpringBoot中Log日志的集成

作者:小王java 时间:2023-05-27 09:55:13 

一、日志的分类

1、名字分类

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

  • logBack 日志说明

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

2、日志分类

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

图文详解SpringBoot中Log日志的集成

子日志:包日志 logger

3、日志级别

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

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

图文详解SpringBoot中Log日志的集成

日志级别使用场景
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


<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
   <!--定义项目中日志输出位置-->
   <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
       <!--定义项目的日志输出格式-->
       <!--定义项目的日志输出格式-->
       <layout class="ch.qos.logback.classic.PatternLayout">
           <pattern> [%p] %d{yyyy-MM-dd HH:mm:ss} %m %n</pattern>
       </layout>
   </appender>

<!--项目中跟日志控制-->
   <root level="INFO">
       <appender-ref ref="stdout"/>
   </root>
   <!--项目中指定包日志控制-->
   <logger name="com.baizhi.dao" level="DEBUG"/>

</configuration>

(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(多)>all
logging:
 level:
   root: debug
   com.tjcu.controller: debug
   com.tjcu.dao: debug

图文详解SpringBoot中Log日志的集成

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

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

先配置 com.tjcu.controller: debug


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

controller里面使用日志对象


@Controller
@CrossOrigin
@ResponseBody
public class EmpController {
   //在控制层定义日志对象
   private static final Logger log = LoggerFactory.getLogger(EmpController.class);
   @Autowired
   private EmpService empService;

@RequestMapping("/emp/queryAll")
   public  List<Emp> queryall(){
       List<Emp> emps = empService.showEmp();
       for (Emp emp : emps) {
           log.debug(String.valueOf(emp));
       }
       return emps;
   }

图文详解SpringBoot中Log日志的集成

前端访问后

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

图文详解SpringBoot中Log日志的集成

控制台结果

图文详解SpringBoot中Log日志的集成

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

1、下载Log Support2插件

图文详解SpringBoot中Log日志的集成

2、重启idea

图文详解SpringBoot中Log日志的集成

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

FrameWork框架选择slf4j

图文详解SpringBoot中Log日志的集成

我们为什么要使用slf4j

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

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

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

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

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

  • 提供日志接口

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

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

图文详解SpringBoot中Log日志的集成

5、测试

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

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


@Controller
@CrossOrigin
@ResponseBody
public class EmpController {
   private static final Logger log= LoggerFactory.getLogger(EmpController.class);
   @Autowired
   private EmpService empService;

@RequestMapping("/emp/queryAll")
   public  List<Emp> queryall(){
       List<Emp> emps = empService.showEmp();
       for (Emp emp : emps) {
           log.debug("");
           log.info("");
           log.warn("");
       }
       return emps;
   }

图文详解SpringBoot中Log日志的集成

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

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

图文详解SpringBoot中Log日志的集成


@Controller
@CrossOrigin
@ResponseBody
public class EmpController {
   private static final Logger log= LoggerFactory.getLogger(EmpController.class);
   @Autowired
   private EmpService empService;

@RequestMapping("/emp/queryAll")
   public  List<Emp> queryall(){
       List<Emp> emps = empService.showEmp();
       for (Emp emp : emps) {
           log.info("员工的信息 {} {}",emp,"这是占位");
       }
       return emps;
   }

图文详解SpringBoot中Log日志的集成

来源:https://blog.csdn.net/weixin_44385486/article/details/122158004

标签:springboot,log,日志
0
投稿

猜你喜欢

  • SpringBoot接口加密解密统一处理

    2023-04-12 19:42:04
  • 基于XSLT调试的相关问题

    2022-11-01 14:22:53
  • spring boot 实现配置多个DispatcherServlet最简单方式

    2023-12-18 03:24:46
  • android Retrofit2网络请求封装介绍

    2022-02-09 18:46:49
  • 采用C#实现软件自动更新的方法

    2021-12-30 19:13:38
  • Java切割字符串的踩坑实战记录

    2023-02-05 14:13:25
  • Java String类简单用法实战示例【字符串输出、比较】

    2021-09-22 11:59:51
  • 微信公众平台开发教程(三) 基础框架搭建

    2022-08-12 00:33:50
  • Java中ArrayList类的用法与源码完全解析

    2023-07-22 02:32:49
  • Java中获取泛型类型信息的方法

    2022-06-30 16:06:34
  • shiro之记住登录信息

    2023-03-06 18:39:13
  • c#求两个数中最大值的方法

    2021-09-21 15:24:20
  • spring mvc中直接注入的HttpServletRequst安全吗

    2021-12-29 07:48:16
  • 灵活使用Android中ActionBar和ViewPager切换页面

    2022-07-08 17:20:09
  • C#控件Picturebox实现鼠标拖拽功能

    2021-10-30 20:52:36
  • Java 使用getClass().getResourceAsStream()方法获取资源

    2023-07-23 08:59:56
  • Spring Security过滤器链体系的实例详解

    2023-08-25 03:24:15
  • java定时任务Timer和TimerTask使用详解

    2023-07-13 00:29:33
  • DevExpress实现为TextEdit设置水印文字的方法

    2021-11-11 14:27:32
  • Android ProgressDialog进度条使用详解

    2022-09-24 17:06:03
  • asp之家 软件编程 m.aspxhome.com