1

常用的日志框架

  • logback
  • log4j
  • log4j2
  • commons logging
  • slf4j

在spring boot中选用的是 slf4j + logback 进行日志输出。

slf4j的使用

我们知道 slf4j 是一个日志门面,具体的日志实现是由具体的日志框架实现的,比如 log4j、logback等日子框架。
如下图所示,slf4j集成日志框架需要导入的 jar 包:
slf4j集成日志框架
当我们使用某个日志框架时,只需要在我们的系统类路径下配置对应的日志框架配置文件即可,比如使用logback日志框架,配置其配置文件logback.xml即可。

系统如何统一面向 slf4j 进行日志输出

我们在系统开发中可能想使用 slf4j + logback 进行日志输出,但是我们系统依赖的 spring、mybatis 框架可能使用的是其他日志框架,那我们如何统一面向 slf4j 进行日志输出呢?
图片描述

通过这张图我们就知道如何实现:

  • 系统中其他框架使用的日志框架jar排除,比如图中统一使用的slf4j+logback输出日志,但是系统依赖的框架是commons logging,此时就是排除commons logging的jar包
  • 导入适配包,因为系统依赖的框架还需要日志输出,比如图中导入了 jcl-over-slf4j.jar
  • 使用 slf4j + logback 进行统一日志记录

spring boot 日志关系

jar包依赖关系

图片描述
从图中可以看出springboot底层给我自动适配了常见的日志框架,将其替换成 slf4j 。所以当我们引入其他框架jar包时,要排除框架本身自带的日志框架。

spring boot中的日志配置

  1. 给类路径下配置上日志框架的配置文件
日志框架 配置文件
Logback logback-spring.xml , logback.xml
Log4j2 log4j2-spring.xml , log4j2.xml
  • logback-spring.xml 和 logback.xml 的区别
    (1)logback.xml:直接就被日志框架识别了。
    (2)logback-spring.xml :日志框架就不直接加载日志的配置项,由SpringBoot解析日志配置,可以使用 spring boot 的高级Profile功能。

    <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>

    在application.properties文件中配置激活dev开发环境

    spring.profiles.active=dev

一只小小鸟
144 声望25 粉丝

如何做一个深层次的思考者,从简单开始、从记录开始。