SpringBoot的日志框架使用、日志框架切换【log4j2】

日志使用

SpringBoot使用SLF4jlogback

一、如何在系统中使用SLF4j

不调用日志的实现类,而是调用日志抽象层的方法,;

给系统里面导入slf4j的jar和logback的jar;

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以后,配置文件还是做成日志实现框架自己本身的配置文件


二、统一日志记录

统一日志记录,让别的框架也使用slf4j进行日志输出

在这里插入图片描述


让系统中的所有日志统一到slfj4

1、将系统中的其他日志框架排除出去;

2、用中间包来替换原有的日志框架;

3、导入slf4j相关的实现包;


SpringBoot日志关系

SpringBoot每一个启动器都要依赖这个

<dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter</artifactId>
      <version>2.3.4.RELEASE</version>
      <scope>compile</scope>
    </dependency>

SpringBoot使用spring-boot-starter-logging来做日志功能;

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-logging</artifactId>
      <version>2.3.4.RELEASE</version>
      <scope>compile</scope>
    </dependency>

在这里插入图片描述

总结:

​ 1)、SpringBoot底层也是用的slf4j+logback进行日志记录;

​ 2)、SpringBoot把其他的日志替换成了slf4j;

​ 3)、中间替换包:

在这里插入图片描述

​ 4)、要引入其他框架,得把该框架下的日志框架移除;

Spring框架用的是commons-logging;

所以Spring框架也是先移除了自己的commons-logging框架

在这里插入图片描述

SpringBoot能够适配所有的框架,我们在导入其他框架的时候,只需要将该框架下依赖的日志框架排除就可以;


三、日志使用

默认配置

SpringBoot默认帮我们配好了日志,直接使用即可;

 //记录器
    Logger logger = LoggerFactory.getLogger(getClass());
    @Test
    void contextLoads() {

        //日志的级别
        //由低到高 trace<debug<info<warn<error
        //可以调整输出日志级别,日志只会在该级别及比他高的级别生效
        logger.trace("这是trace信息...");
        logger.debug("这是debug信息...");
        //SpringBoot默认使用的是info级别,没有指定就会使用SpringBoot规定的默认级别
        logger.info("这是info信息...");
        logger.warn("这是warn信息...");
        logger.error("这是error信息...");
    }

可以在application.properties中修改日志级别

#将com.cenmingzhong包下的级别指定变成trace级别
logging.level.com.cenmingzhong=trace


可以在application.properties中指定日志保存地址

#在当前磁盘的跟路径下创建spring文件夹和里面的log文件夹,在Log文件夹生成spring.log文件
logging.path=/spring/log

#可以指定完整的路径
logging.file=G:/springboot.log

#如果logging.path= 后面不加地址,则默认在当前项目下生成springboot.log日志
logging.path=

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

#指定文件中日志输出的格式
logging.pattern.file=%d{yyyy-MM-dd} === [%thread] === %-5level === logger{50} === %msg%n

日期输出格式:

在这里插入图片描述

SpringBoot日志修改的默认配置:

#将com.cenmingzhong包下的级别指定变成trace级别
logging.level.com.cenmingzhong=trace

#在当前磁盘的跟路径下创建spring文件夹和里面的log文件夹,在Log文件夹生成spring.log文件
logging.path=/spring/log

#可以指定完整的路径
#logging.file=G:/springboot.log

#如果logging.path= 后面不加地址,则默认在当前项目下生成springboot.log日志
#logging.path=

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

#指定文件中日志输出的格式
logging.pattern.file=%d{yyyy-MM-dd} === [%thread] === %-5level === logger{50} === %msg%n

指定配置

给类路径下放上每个日志框架自己的配置文件即可;SpringBoot接着就会不使用自己的默认配置;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n3aL4zYm-1603936183832)(日志使用.assets/image-20201028192353117.png)]

logback.xml:直接就被日志框架识别了;

logback-spring.xml:日志框架不直接加载日志的配置项,由SpringBoot解析日志配置,可以使用SpringBoot的高级Profile功能;

logback-spring.xml下可以使用SpringProfile功能;

推荐使用logback-spring.xml;

<SpringProfile name="dev">
//可以指定某段配置只在某个环境下生效
</SpringProfile>
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
        <!--
        日志输出格式:
        %d 表示日期时间
        %thread 表示线程名
        %-5level 级别从左显示5个字符宽度
        %logger{50} 表示logger名字最长50个字符,否则按句点分隔
        %msg 日志消息
        %n 换行符 
        -->

    <layout class="ch.qos.logback.classic.PatternLayout">
        <springProfile name="dev">
            <pattern>
                %d{yyyy-MM-dd HH:mm:ss.SSS} ----> [%thread] ----> %-5level %logger{50} - %msg%n
            </pattern>
        </springProfile>
        <springProfile name="!dev">
            <pattern>
                %d{yyyy-MM-dd HH:mm:ss.SSS} ----> [%thread] ----> %-5level %logger{50} - %msg%n
            </pattern>
        </springProfile>

    </layout>

</appender>

切换日志框架(以log4j为例)

可以按照slf4j的日志适配图,进行相关的切换;

slf4j+log4j的方式;

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <artifactId>logback-classic</artifactId>
                    <groupId>ch.qos.logback</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
        </dependency>

1、排除其他日志框架;

在这里插入图片描述

 			<exclusions>
                <exclusion>
                    <artifactId>logback-classic</artifactId>
                    <groupId>ch.qos.logback</groupId>
                </exclusion>
            </exclusions>

2.导入中间适应层;

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
        </dependency>

3.导入日志框架的配置文件log4j.properties;

#设置日志等级
log4j.rootLogger = debug , stdout, D, E

#输出到控制台
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Targer=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE}====%5p %c{1}:%L - %m%n

#输出到日志文件
#log4j.appender.D=org.apache.log4j.ConsoleAppender
#log4j.appender.D.File=logs/log.log
#log4j.appender.D.Append=true
#log4j.appender.D.Threshold=DEBUG###输出DEBUG级别以上的日志
#log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#log4j.appender.D.layout.ConversionPattern=%d{ABSOLUTE}====%5p %c{1}:%L - %m%n

#保存异常信息到单独文件
#log4j.appender.D=org.apache.log4j.ConsoleAppender
#log4j.appender.D.File=logs/error.log
#log4j.appender.D.Append=true
#log4j.appender.D.Threshold=DEBUG###输出DEBUG级别以上的日志
#log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#log4j.appender.D.layout.ConversionPattern=%d{ABSOLUTE}====%5p %c{1}:%L - %m%n

切换为log4j2

1.排除原有的spring-boot-starter-logging;

在这里插入图片描述

2.导入spring-boot-starter-log4j2中间包;

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

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

3.在类路径下写配置文件;

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

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

3.在类路径下写配置文件;

推荐用log4j2-spring.xml;

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值