springboot学习02-[热部署和日志]

热部署

为了进一步提高开发效率,springboot为我们提供了全局项目热部署,日后在开发过程中修改了部分代码以及相关配置文件后,不需要每次重启使修改生效,在项目中开启了springboot全局热部署之后只需要再修改之后等待几秒即可修改生效。

  • 1、开启热部署
    在项目中引入依赖
  <!--热部署依赖-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-devtools</artifactId>
      <optional>true</optional>
    </dependency>
  • 2、idea中配置
  • 2.1
    在这里插入图片描述
  • 2.2
    在这里插入图片描述

日志

在这里插入图片描述
在这里插入图片描述

如果要更换日志实现比如log4j到jul

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

混乱的java日志体系-代码演示

  • 测试jul
import java.util.logging.Logger;

/**
 * @author : zhouzhiqiang
 * @date : 2024/6/24 15:00
 * @description :崇尚官方开发组使用jul
 */
public class JULMain {
    public static void main(String[] args) {
        Logger log=Logger.getLogger(JULMain.class.getName());
        log.info("崇尚官方开发组使用jul");
    }
}

在这里插入图片描述

  • log4j测试
  • 引入依赖
    <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
  • 自定义log4j.properties
# 设置日志根
# 设置日志根 trance<debug<info<warn<error<fetal
log4j.rootLogger=trace,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] -%m%n

  • 测试类
import org.apache.log4j.Logger;

/**
 * @author : zhouzhiqiang
 * @date : 2024/6/24 15:00
 * @description :崇尚开源开发组使用log4j
 */
public class Log4jMain {
    public static void main(String[] args) {
        Logger logger=Logger.getLogger(Log4jMain.class);
        logger.info("崇尚开源开发组使用log4j");
    }
}

在这里插入图片描述
由以上两种可以看出如何直接使用日志就会出现两种日志在统一的时候不好管理的问题
为了解决这个问题,应该使用sl4j门面来做:
强制:应用中不可直接使用日志系统(log4j、logback)中的API,而应该依赖使用日志框架中的API。使用门面模式的日志框架,有利于维护各个类的日志处理方式的统一。

门面使用

对于log4j,log4j.properties是必须的

  • Jul测试
  • 添加门面依赖
  <!--引入jcl门面依赖-->
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.2</version>
        </dependency>
  • 添加日志实现commons-logging.properties
org.apache.commons.logging.log=org.apache.commons.logging.impl.Jdk14Logger
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
 * @author : zhouzhiqiang
 * @date : 2024/6/24 15:00
 * @description :崇尚官方开发组使用jul
 * jul(实现)+jcl(门面)
 */
public class JULMain {
    public static void main(String[] args) {
        Log log = LogFactory.getLog(JULMain.class);
        log.info("崇尚官方开发组使用jul");
    }
}

在这里插入图片描述

  • log4j测试
  • 添加依赖
      <!--log4j核心依赖-->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

        <!--slf4j门面的核心依赖-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.30</version>
        </dependency>
  • 添加桥接器
 <!--添加sl4j ->sl4j的桥接器-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.29</version>
        </dependency>
  • 测试代码
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @author : zhouzhiqiang
 * @date : 2024/6/24 15:00
 * @description :崇尚开源开发组使用log4j
 * log4js(实现)+sl4j(门面)
 */
public class Log4jMain {
    public static void main(String[] args) {
        Logger logger = LoggerFactory.getLogger(Log4jMain.class);
        logger.info("崇尚开源开发组使用log4j");
    }
}

在这里插入图片描述
上述代码虽然使用了门面但是有两种日志门面,必须进行统一

统一两种日志

只需要添加日志转换适配器依赖就可以了
下述是jcl到slf4j的统一

     <!--为了日志统一实现,将jcl转换到slf4j 添加jcl到slf4j的适配器依赖-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>jcl-over-slf4j</artifactId>
            <version>1.7.30</version>
        </dependency>

此时不需要改代码jcl就自动转到sLf4j,运行效果如下:
在这里插入图片描述

springboot默认的日志框架

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

logback桥接:logback-classic

SpringBoot也把其他日志都替换成了slf4j

log4j适配:log4j-over-sl4j
jul适配:jul-to-slf4j
这两个适配器都是为了适配Spring的默认日志:jcl

在这里插入图片描述

SpringBoot日志的级别

SpringBoot默认的日志级别是info级别(比info级别高的都可以输出)

在SpringBoot中使用

  • 自己声明
    //声明日志记录器
    static Logger logger = LoggerFactory.getLogger(MyApplication.class);
  • 使用注解@Slf4j
    @Slf4j 注解是依赖于lombok的
    测试代码
@SpringBootApplication
@Slf4j
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
        log.trace("跟踪");
        log.debug("调试");
        log.info("信息");
        log.warn("警告");
        log.error("报错");
    }
}

在这里插入图片描述

日志级别

  • 日志级别
    可以设置trace<debug<info<warn<error<fatal级别由低到高
  • 可以在配置文件中修改springboot默认的日志级别
logging:
  level:
    root: trace

在这里插入图片描述

SpringBoot日志的格式

在这里插入图片描述

  • 详细介绍
    可以使用 pattern: console: 来修改默认的输出格式
logging:
  level:
    com.com.springboot: trace
  pattern:
    console: 

在这里插入图片描述

SpringBoot日志的文件输出

默认情况下,Spring Boot仅仅记录到控制台,不写日志文件。如果除了控制台输出外还想写日志文件,则需要设置一个loggin.file.name或者logging.file.path属性

  • logging.file.name
    logging.file.name:可以设置文件的名称,如果没有设置路径会默认在项目的相对路径
logging:
  level:
    com.com.springboot: trace
  pattern:
    console:
  file:
    name: D:/logs/aa.log
  • logging.file.path
    不可以指定文件名称,必须要指定一个物理文件夹路径,文件名默认是spring

SpringBoot日志的归档

在这里插入图片描述
在这里插入图片描述
logging.logback.rollingpolicy.max-file-size:配置配置文件大小

logging.file.name=D:/logs/aa.log
logging.logback.rollingpolicy.max-file-size=5KB

在这里插入图片描述

logging.logback.rollingpolicy.max-history=5 #归档文件保留天数

SpringBoo自定义日志配置文件

通过自定义日志配置文件,可以发送日志邮件,或者将日志直接保存到数据库

SpringBoot默认日志框架切换到其他日志框架

例如:springboot默认的logback切换到log4j2
只需要加一个log4j2的场景启动器就可以了,但是要排除logback的日志桥接器(slf4j只能运行有一个日志桥接器),否则会报错

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

    <!--log4j2的场景启动器-->
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-log4j2</artifactId>
    </dependency>
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值