SpringBoot日志框架基础(slf4j+logback)

SpringBoot日志框架基础(slf4j+logback)

1.统一日志记录

之前要是使用ssm框架使用统一日志的话,有的框架(spring默认commons-logging,hibernate默认jboss-logging等等…)有自己默认日志框架,因此在使用前需要统一日志记录。以此实现即使默认为其他日志框架也会统一使用slf4j进行输出。

将系统中所有日志都统一到slf4j步骤:

  • 将系统中其他日志框架先排除出去

  • 将中间包来替换原有的日志框架

  • 导入slf4j其他的实现

    不过SpringBoot无需这样了,已经在底层统一日志框架为slf4j+logback。

2.SpringBoot日志的实现原理解析

进入pom.xml文件中,右键选择Diagrams——>show Dependencies
在这里插入图片描述
在这里插入图片描述

  • 使用了中间替换包log4j-to-slf4j和jul-to-slf4j

  • SpringBoot底层把log4j和jul替换成了slf4j

    因此SpringBoot日志框架底层是由slf4j+logback组成

    3.设置日志框架

    在配置文件application.propeities中可设置以下常用属性:

    1.logging.level设置日志等级(包级别/类级别)

    如logging.level.com.lipiao.traveltreasure.controler=trace

    2.logging.file设置日志文件名

    //当前项目下生成myLog.log

    如logging.file=myLog.log

    //指定文件路径生成(D盘下的LogFile下)

    如logging.file=D:/LogFile/myLog.log

    3.logging.path

    设置日志文件存放路径,文件名会有默认的spring.log

    logging.path=/SpringBoot/Log #默认创建该路径和spring.log

    • logging.file与logging.path有冲突设置,两个都选择会使用logging.file设置,一般使用logging.path
      在这里插入图片描述

    日志输出格式:

    • %d:时间

    • %thread:线程名

    • %-Slevel:级别

    • %logger:logger名字,取前50字符

    • %msg:日志消息

    • %n换行

      修改SpringBoot默认日志输出的格式可以使用以下两方法:

    4.指定控制台中日志输出的格式

    logging.pattern.console=

    5.指定文件中日志输出的格式

    logging.pattern.file=

    4.使用日志框架

    创建单例模式(饿汉)工具类

    package com.lipiao.traveltreasure.util;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    /**
     * 日志工具类-使用默认的slf4j+logback
     * 单例模式-饿汉
     * LogUtil.getInstance() //初始化
     * LogUtil.getLogger().  //使用
     */
    public class LogUtil {
    
        //单例LogUtil
        private static LogUtil logUtil = new LogUtil();
    
        //记录器
        private static Logger logger;
    
        public LogUtil() {
            logger = LoggerFactory.getLogger(getClass());
        }
    
        //初始化
        public static LogUtil getInstance() {
            return logUtil;
        }
    
        //调用
        public static Logger getLogger() {
            return logger;
        }
    }
    

    Application启动类main中初始化该工具:

    
    @SpringBootApplication
    @MapperScan("com.lipiao.traveltreasure.dao") //扫描Mapper接口
    public class TravelTreasureApplication {
    
        public static void main(String[] args) {
            //初始化LogUtil单例
            LogUtil.getInstance();
            SpringApplication.run(TravelTreasureApplication.class, args);
        }
    
    }
    

    在自己的java文件中使用

    private String TAG="ActivityController";
    //日志     
    LogUtil.getLogger().info(TAG+"需要打印的日志信息/调式信息");
    
发布了67 篇原创文章 · 获赞 32 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_42391904/article/details/100603559