使用spring boot actuator和logback实现日志的热加载


一、使用Spring Boot Actuator动态修改日志级别

spring boot actuator是通过接口修改日志级别

1.引入spring-boot-starter-actuator依赖

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-actuator</artifactId>
	<version>2.3.7.RELEASE</version>
</dependency>

2.暴露接口

从spring boot2.0开始默认的接口是不可用的,需要加上配置

management.endpoints.web.exposure.include=loggers
management.endpoint.loggers.enabled=true

application.properties的配置文件是

# 应用名称
spring.application.name=logback
# 应用服务 WEB 访问端口
server.port=8080
management.endpoints.web.exposure.include=loggers
management.endpoint.loggers.enabled=true
logging.level.com.logback.logback = info
package com.logback.logback;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @Description LogbackController
 * @Author caofeifei
 * @Date 2021/3/31 下午9:40
 */
@RestController
@Scope("prototype")
public class LogbackController {

    private Log log = LogFactory.getLog(LogbackController.class);

    @RequestMapping("/logback")
    public String test() {
        log.warn("warn");
        log.info("info");
        log.debug("debug");
        log.trace("debug");
        return "1";
    }
}

3.查看日志级别和修改日志级别

通过rest接口查看日志级别
请求接口:http://localhost:8080/actuator/loggers/com.logback.logback
在这里插入图片描述
此时请求接口/logback,打印了如下:
在这里插入图片描述
修改日志级别
在这里插入图片描述
此时再请求接口/logback,打印了如下:
在这里插入图片描述

二、使用logback实现日志热加载

logback日志的热加载主要依赖与自带的scan属性

1.在reource文件夹下新建logback.xml属性

<?xml version="1.0" encoding="UTF-8"?>
<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
<!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true -->
<!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
<configuration  scan="true" scanPeriod="10 seconds">
    <!-- 彩色日志 -->
    <!-- 彩色日志依赖的渲染类 -->
    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
    <!-- 彩色日志格式 -->
    <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>


    <!--输出到控制台-->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
            <!-- 设置字符集 -->
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <logger name="com.logback.logback" level="info" />

    <root level="info">
        <appender-ref ref="CONSOLE" />
    </root>

</configuration>

2.启动项目,请求接口

此时请求接口/logback,打印了如下:
在这里插入图片描述
修改logback.xml的日志级别,logback整个就是指定周期的查看整个文件是否被编辑
在这里插入图片描述

注意我用的是idea直接启动项目,项目记载的是target里面的文件,因此需要修改target里面文件才生效
此时再次请求接口/logback,打印了如下:
在这里插入图片描述
修改级别为debug,生效

三、使用nacos或者apollo配置中心实现日志的热加载

nacos或者apollo的日志的热加载只需要实现配置更改后自动刷新即可

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Oak_Fei

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值