Springboot 日志的使用

日志打印:demo代码


文章:SpringBoot - 日志的配置和使用详解(SLF4j、Logback)

SpringBoot - 日志的配置和使用详解(SLF4j、Logback)

1,基本介绍

(1)市面上常见的日志框架有很多。通常情况下,日志是由一个抽象层+实现层的组合来搭建的,而用户通常来说不应该直接使用具体的日志实现类,应该使用日志的抽象层。

抽象层JCLJakarta Commons Logging)、SLF4jSimple Logging Facade for Java)、jboss-logging 实现层Log4jJULjava.util.logging)、Log4j2Logback

(2)SpringBoot 默认选择的是 SLF4J + Logback 的组合,如果不需要更改为其他日志系统(如 Log4j2 等),则无需多余的配置,LogBack 默认会将日志打印到控制台上。

由于新建的 Spring Boot 项目一般都会引用 spring-boot-starter 或者 spring-boot-starter-web,而这两个起步依赖中都已经包含了对于 spring-boot-starter-logging 的依赖,所以,我们无需额外添加依赖。


文章:日志打印 https://xwjie.github.io/rule/log.html#配置nginx


原文: 日志的使用「logback」「log4j」

日志框架

全面有效的日志信息记录可以帮助我们全面的监控应用程序的状态,可以通过日志系统监控服务器的状态,记录操作行为以及操作轨迹数据,系统发生错误,事后进行故障分析,快速定位问题。

举个例子,日志系统在我们的项目中就像 城市的道路监控系统 ,城市的道路监控系统能够通过摄像头和其他仪器 记录下来每个红绿灯路口的情况,通过这些信息,可以实时监控各个路口的情况,还可以事后追责。

要在代码中实现类似的功能,就需要用到日志框架了,那么什么是日志框架呢?

SpringBoot 集成 日志

1 日志打印常见概念

什么是日志级别
在项目运行起来之后,会有很多的日志信息输出,这些信息五花八门 即包括你打印的“进入这个方法了”“出去这个方法了”这些意义不大的信息,也包括 用户小明 被多扣了十块钱 这些重要的信息。很明显信息之间的重要程度是不一样的,日志级别就是用来标记 信息重要程度的

日志的级别划分
日志由低到高 trace 日志的级别除了区分信息的重要程度,还有一个特别重要的作用是 调整日志信息输出的多少

什么意思呢?举例说明

  1. 你要通过日志输出一句话:“哈哈哈哈哈”。这句话很显然不咋重要,就可以把它的等级设置为 info
  2. 项目中捕获了异常,想要把异常信息通过日志输出,这个很重要,于是把他标记为了 Error

......就这样,在整个项目中,你标记了 10000 条 info的信息,10个Error的信息,那么项目运行的时候,如果1万多条信息全部输出话,重要的Error信息就会被淹没在不重要的信息中。
看不到重要信息了。咋办嘛?

解决办法是:规定整个项目的日志输出等级为Error即可,代表只有Error和Error以上等级的日志信息才会被输出到控制台,其他info debug等级不够就看不到了。

2 SpringBoot 集成 logback 日志

在SpringBoot中我们使用的第一个日志框架是 logback,logback是啥呢?简单介绍,logback和更加常用的log4j一个爹,是log4j创始人设计的又一个开源日志组件。

logback 日志使用

  1. 注意:SpringBoot 项目默认已经集成了 logback日志,所以在 SpringBoot 中使用 logback 日志,不需要导jar包,也不需要导入额外的配置文件。
  2. SpringBoot 中可以直接使用 logback 日志 打印信息
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class TestLog {

    /**
     * getLogger 参数为当前类的类对象
     * org.slf4j.Logger;
     * org.slf4j.LoggerFactory;
     */
    private static Logger logger = LoggerFactory.getLogger(TestLog.class);

    public static void main(String[] args) {
        /**
         * 通过 Logger 的api打印信息
         * 日志的级别;
           * 由低到高   trace

SpringBoot修改日志的默认配置

SpringBoot默认给我们使用的是info级别,所有的日志信息都会按照这个标准输入,如果想要修改 就需要修改配置

常见配置

  1. 根日志级别配置
  2. 具体某个包的日志级别
#日志配置
#根日志级别配置 整个项目的输出日志的级别  默认是 info
logging.level.root=info

#定义某个包的日志输出级别
logging.level.com.example.demomdc.controller=debug

注意:具体包的日志级别 优先级高于 整个项目的根日志级别,dao包我们定义为了 debug 级别,这时候尽管整个项目的是info,但是dao包相关的日志仍然按照debug级别输出

  1. 定义日志信息输出到文件
#定义日志信息输出到文件
#logging.path=
#不指定路径在当前项目下生成springboot.log日志

#可以指定完整的路径;
#logging.file=G:/springboot.log
#在当前项目下创建spring文件夹和里面的log文件夹;使用spring.log作为默认文件
logging.file.path=spring.log
#指定文件中日志输出的格式
logging.pattern.file=$d{yyyy-MM-dd} [%thread] %-5level %logger{50} %msg %n

  1. 在控制台输出的日志的格式
# 在控制台输出的日志的格式
logging.pattern.console=$d{yyyy-MM-dd} [%thread] %-5level %logger{50} %msg %n

日志输出格式

  • %d表示日期时间,
  • %thread表示线程名,
  • %-5level:级别从左显示5个字符宽度
  • %logger{50} 表示logger名字最长50个字符,否则按照句点分割。
  • %msg:日志消息,
  • %n是换行符

以上就是 SpringBoot 项目中使用 logback 日志的正确姿势了。

3 logback独立配置文件【了解内容】

如果在 SpringBoot 中想要单独配置 logback 不使用application配置文件,也非常简单,只需要在项目的 src/resources 目录下导入 logback.xml 配置文件即可。
配置文件示例如下:



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

    
    
        
    
    
    



4 SpringBoot 集成 log4j 日志

最后简单说一下在SpringBoot 中如何使用log4j日志,注意:推荐使用logback,但是有需要可以切换成log4j。

日志切换的切换不需要 修改 application 配置文件中的日志配置,只需要将 logback 的依赖切换为 log4j 即可

1.将logback的依赖排除


    org.springframework.boot
    spring-boot-starter-web
    
    
        
            ch.qos.logback
            logback-classic
        
        
            org.slf4j
            log4j-over-slf4j
        
    


2.导入log4j的依赖



    org.slf4j
    slf4j-log4j12


让我们再次回顾本文的学习目标

  • 掌握日志的基本概念和作用
  • 掌握SpringBoot中日志的使用
  • 了解SpringBoot中日志的相关原理

你可能感兴趣的:(Springboot 日志的使用)