当前位置:首页 > Java技术 > springboot日志

springboot日志

2022年11月08日 22:27:31Java技术12

3.18

目录

 

1.日志

2.SLFS4j的使用

   实现

   遗留问题

   3.springboot日志关系

   4.springboot默认配置

 

 

 

1.日志

日志门面(日志的抽象层) 日志实现

JCL(jakarta Commons Logging)SLF4j(Simple Logging Facade for Java) jboss-logging

Log4j JUL(iava.util.logging) Log4j2 Logback

左边选一个门面(抽象层),右边选择一个来实现

springboot:底层是spring框架,spring框架默认是JCL;springboot选用SFL4j和logback。

 

 

2.SLF4j的使用

以后开发,日志记录方法的调用不应该直接调用日志的实现类,而是调用日志抽象层里面的方法;给系统里面导入slf4j的jar和logback的实现jar

http://www.slf4j.org/manual.html

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class HelloWorld {
  public static void main(String[] args) {
    Logger logger = LoggerFactory.getLogger(HelloWorld.class);
    logger.info("Hello World");
  }
}

 

slf4j的实现:

springboot日志 _ JavaClub全栈架构师技术笔记

 

 

1.应用里只导了SLF4J的jar,进行日志的记录和调用,会输出到一个空的位置,因为没有任何实现。

2.应用里导入slf4j-api.jar和logback的jar包  调用slf4j的接口,用logback来实现。

3.应用里导入slf4j-api.jar、slf4j-log412.jar、log4j.jar

由于log4j出现的早于slf4j,设计时没考虑到slf4j的存在。为了让log4j也能符合slf4j的规范,需要中间的适配层slf4j-log412.jar。

适配层实现抽象层slf4j的具体方法,在适配层的方法里进行真正日志记录的时候调用log4j。

 

每一个日志的实现框架都有自己的配置文件。使用slf4j以后,配置文件还是做成日志实现框架的自己本身的配置文件。

  比如:用log4j的来做日志实现,就写log4j的配置文件;用logback来做日志实现,就写logback的配置文件。

 

遗留问题:项目中有 slf4j+logback、Spring(commons-logging)、Hibernate(jboss-logging)、Mybatis··· ···

目的:统一日志记录,即使是别的框架也统一使用slf4j进行输出。

方法:1.将系统中其他日志框架先排除出去,用中间包替换原有的日志框架

         用jcl-over-slf4j.jar替换commons-logging.jar

         用log4j-over-slf4j.jar替换log4j.jar

         用jul-to-slf4j.jar替换java.util.logging API

        2.导入slf4j其他的实现

springboot日志 _ JavaClub全栈架构师技术笔记

 

 

 

 

3.springboot日志关系

springboot用它来使用日志功能

 

    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </dependency>

 

 

 

 打开pom.xml 左键springboot日志 _ JavaClub全栈架构师技术笔记

 

 

 可以看到2.0版本的springboot底层依赖关系:

使用logback记录日志,把 jul-to-slf4j log4j-to-slf4j  日志框架转为slf4j

springboot日志 _ JavaClub全栈架构师技术笔记

 

通过spring-jcl 将commons-logging 转换为slf4j

 springboot日志 _ JavaClub全栈架构师技术笔记

 

 

 

总结:

1.springboot底层也是使用slf4j+logback的方式进行日志记录

2.springboot也把其他的日志都替换成了slf4j

 

 

 

 

如果要引入其他框架,一定要把默认日志框架移除

spring框架用的是commons-logging,springboot能自动适配所有日志,而且底层使用slf4j+logback记录日志,引入其他框架只需要将这个框架引入的日志文件排除。

 

在1.x版本的springboot中可以看到:spring-core.pom已把commons-logging排除

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-core</artifactId>
  <version>4.3.20.RELEASE</version>
  <exclusions>
    <exclusion>
      <artifactId>commons-logging</artifactId>
      <groupId>commons-logging</groupId>
    </exclusion>
  </exclusions>
</dependency>

在2.0版本的springboot,转换器直接写到了jcl原本包里,jcl就是用slf4j

spring-core.pom

  <dependencies>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>1.2.3</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-to-slf4j</artifactId>
      <version>2.10.0</version>
      <scope>compile</scope>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>jul-to-slf4j</artifactId>
      <version>1.7.25</version>
      <scope>compile</scope>
    </dependency>
  </dependencies>

 

 

4.springboot默认配置

1.按springboot的默认配置输出日志

 @Test
    public void text(){
        //日志的级别 由低到高trace<debug<info<warn<error
        //可以调整输出的日志级别,日志就只会在这个级别以后的高级级别生效
        //springboot默认使用的是info级别的,所以只会输出info及以后的内容,也称root级别
        logger.trace("trace");
        logger.debug("debug");
        logger.info("info");
        logger.warn("warn");
        logger.error("error");
    }

输出:

2020-03-18 19:09:47.607  INFO 18038 --- [           main] com.example.demo.DemoApplicationTests    : info
2020-03-18 19:09:47.607  WARN 18038 --- [           main] com.example.demo.DemoApplicationTests    : warn
2020-03-18 19:09:47.607 ERROR 18038 --- [           main] com.example.demo.DemoApplicationTests    : error

 

更改默认配置:

在application.properties中加入,将springboot的日志默认级别改为trace,则trace及级别大于trace的内容都可以输出

logging.level.com=trace

输出:

2020-03-18 21:02:44.968 TRACE 21636 --- [           main] com.example.demo.DemoApplicationTests    : trace
2020-03-18 21:02:44.968 DEBUG 21636 --- [           main] com.example.demo.DemoApplicationTests    : debug
2020-03-18 21:02:44.968  INFO 21636 --- [           main] com.example.demo.DemoApplicationTests    : info
2020-03-18 21:02:44.969  WARN 21636 --- [           main] com.example.demo.DemoApplicationTests    : warn
2020-03-18 21:02:44.969 ERROR 21636 --- [           main] com.example.demo.DemoApplicationTests    : error

 

建立springboot.log文档,在application.properties中加入:

#不指定路径在当前项目下生成spring.log,也可以指定完整路径
#2.2版本 生成日志
logging.file.path=/Users/mac/Desktop/springboot.log
#2.0版本可以用 2.2版本已过时
logging.file=springboot.log

springboot对于日志的默认配置可以看源码:org.springframework.boot.logging.logback

2.指定配置

给类路径下放上每个日志框架自己的配置文件(相关规则见官网)即可,springboot就不使用默认配置了springboot日志 _ JavaClub全栈架构师技术笔记

 

作者:zuiaimiusi
来源链接:https://www.cnblogs.com/zuiaimiusi/p/12520763.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/java/68586.html

分享给朋友:

“springboot日志” 的相关文章

[springboot]Slf4j日志框架的体系结构

文章目录 一、五花八门的日志工具包 1.1. 日志框架 1.2.日志门面 1.3日志门面存在的意义...

SpringBoot之整合Mybatis篇

SpringBoot之整合Mybatis篇

开头语 啪嚓,醒木一拍(咳咳) ,上回书我们说到:SpringBoot的简单搭建,也就是SpringBoot的搭建流程,简单的将项目进行启动,本次,我们简单的把SpringBoot与持久层框架Mybatis进行整合,接下来,我们开始。 Mybatis名词解释   &...

SpringBoot 如何进行参数校验

SpringBoot 如何进行参数校验

为什么需要参数校验在日常的接口开发中,为了防止非法参数对业务造成影响,经常需要对接口的参数进行校验,例如登录的时候需要校验用户名和密码是否为空,添加用户的时候校验用户邮箱地址、手机号码格式是否正确。 靠代码对接口参数一个个校验的话就太繁琐了,代码可读性极差。 Validator框架就是为了解决开发人...

Spring Boot 2.0 WebFlux 快速入门实践

Spring Boot 2.0 WebFlux 快速入门实践

02:WebFlux 快速入门实践 Spring Boot 2.0 spring.io 官网有句醒目的话是: BUILD ANYTHING WITH SPRING BOOT Spring Boot (Boot 顾名思义,是...

SpringBoot整合 mybatisPlus

SpringBoot整合 mybatisPlus

引言 最近在准备一期SpringBoot整合大全系列文章,同时也会有视频放出(视频还在酝酿中),如果大家觉得有帮助,记得点赞加收藏哦。 话不多说,咱们直接进入正题。 ​ 代码已经上传到码云:https://gitee.com/lezaiclu...

Java常用日志框架介绍

Java常用日志框架介绍

目录 Java日志概述 Java常用日志框架类别 Java常用日志框架历史 java常用日志框架关系 Commons Logging与Slf4j实现机制对比 Commons Logg...

项目ITP(四) javaweb http json 交互 in action (服务端 spring 手机端 提供各种工具类)勿喷!

项目ITP(四) javaweb http json 交互 in action (服务端 spring 手机端 提供各种工具类)勿喷!

前言   系列文章:[传送门]   洗了个澡,准备写篇博客。然后看书了。时间 3 7 分。我慢慢规律生活,向目标靠近。                       &n...

[转]Tomcat日志详解

cataliana.{yyyy-MM-dd}.log和localhost.{yyyy-MM-dd}.log 是通过logging.properties配置的tomcat自己运行的一些日志, catalina.log 是tomcat自己运行的一些日志 localhost.{yyyy-MM...

【日志框架】log4j、log4j2、logback、slf4j等常用的日志框架及门面

log4j、log4j2、logback、slf4j等常用的日志框架及门面 一、在Java程序中常用日志框架可以分为两类: 无具体实现的抽象门面框架,如:Commons Logging、SLF4J 具体实现的框架,如:Log4j,Log4j 2...

springboot 日志框架

springboot 日志框架

  一:市面上的日志框架: JUL、JCL、Jboss-logging、logback、log4j、log4j2、slf4j.... 左边是日志门面(抽象层)、右边是日志的实现: 日志门面(日志抽象层)...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。