SpringCloud/Boot集成LogBack

一. 简要介绍

  1. 什么是SLF4J?

官网介绍:
Simple Logging Facade for Java (SLF4J) 充当简单的 各种日志记录框架的 Facade 或抽象 (e.g. java.util.logging、logback、log4j)允许最终用户在部署时插入所需的日志记录框架。

类似java中的接口,如果只集成SLF4J,日志只能输出在控制台,并没有输出到文件的能力,要实现真正的日志能力,需要引入其实现层:比如log4j,log4j2,logback等

  1. 什么是LogBack?

logback是log4j的创始人重新设计研发的升级版“log4j”,遵循log4j相同的设计,但重写改进了底层实现

logback分为三大块:

  • logback-core:模块为其他两个模块的基础。
  • logback-classic:模块可以被看做是log4j的改进版本。此外,logback-classic 本身实现了 SLF4J API,因此可以在 logback 和其他日志框架(如 log4j 或 java.util.logging(JUL))之间来回切换。
  • logback-access:模块与 Servlet 容器(如 Tomcat 和 Jetty)集成,以提供 HTTP 访问日志功能。

二. 依赖引入

如果是非springboot项目,需要引入logback-classic

<dependency>
    <groupId>ch.qos.logbackgroupId>
    <artifactId>logback-classicartifactId>
dependency>

进入logback-classic会发现内部已经引入slf4j-api和logback-core
SpringCloud/Boot集成LogBack_第1张图片

如果是springboot/cloud项目,只需要引入spring-boot-starter-web即可

<dependency>
   <groupId>org.springframework.bootgroupId>
   <artifactId>spring-boot-starter-webartifactId>
dependency>

我们来看一下为什么

  1. 进入 spring-boot-starter-web 找到 spring-boot-starter
    SpringCloud/Boot集成LogBack_第2张图片

  2. 进入 spring-boot-starter 找到 spring-boot-starter-logging
    SpringCloud/Boot集成LogBack_第3张图片

  3. 进入 spring-boot-starter-logging 找到 logback-classic
    SpringCloud/Boot集成LogBack_第4张图片

  4. 进入 logback-classic 找到 slf4j-api和logback-core
    SpringCloud/Boot集成LogBack_第5张图片

三. yml文件配置

开发/测试环境打开mybatis日志

mybatis-plus:
  global-config:
    configuration:
      log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

四. logback-spring.xml文件配置

在springboot项目/springcloud每个模块 的resources下创建 logback-spring.xml文件

要修改一下log.name,推荐logs/项目名称,如果是微服务项目,推荐logs/模块名称
按需选择是否注释修改最后面的不同环境的日志级别配置:开发环境推荐debug级别,生产环境推荐info级别

如果是微服务项目,把logback-spring.xml在每一个模块下的resources都添加一份,把log.name修改一下即可


<configuration debug="false" scan="true" scanPeriod="1 seconds">

    <contextName>logbackcontextName>
       
    <property name="log.name" value="logs/这里改为模块名称"/>

    
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%npattern>
        encoder>
    appender>

  
    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.name}.logfile>
        
        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
            
            <FileNamePattern>${log.name}.%d{yyyy-MM-dd}.%i.log.gzFileNamePattern>
            
            <maxFileSize>100MBmaxFileSize>
            
            <maxHistory>7maxHistory>
            
            <totalSizeCap>10GBtotalSizeCap>
        rollingPolicy>
        
        <encoder>
            <charset>UTF-8charset>
            <pattern>%d [%t] %-5level %logger{36}.%M\(%file:%line\) - %msg%npattern>
        encoder>
    appender>



    <logger name="org.springframework" level="warn"/>

    <springProfile name="local">
        
        <logger name="cn.enn.smart.mapper" level="debug"/>
        <root level="info">
            <appender-ref ref="console"/>
            
        root>
    springProfile>

    <springProfile name="dev">
        
        <logger name="cn.enn.smart.mapper" level="debug"/>
        <root level="debug">
            <appender-ref ref="console"/>
            <appender-ref ref="file"/>
        root>
    springProfile>

    <springProfile name="test">
        
        <logger name="cn.enn.smart.mapper" level="debug"/>
        <root level="info">
            <appender-ref ref="console"/>
            <appender-ref ref="file"/>
        root>
    springProfile>

    <springProfile name="pro">
        
        <logger name="cn.enn.smart.mapper" level="debug"/>
        <root level="info">
            <appender-ref ref="console"/>
            <appender-ref ref="file"/>
        root>
    springProfile>

configuration>

你可能感兴趣的:(spring,cloud,logback,spring,log4j,slf4j)