使用spring boot actuator和logback实现日志的热加载
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、使用Spring Boot Actuator动态修改日志级别1.引入spring-boot-starter-actuator依赖2.暴露接口3.查看日志级别和修改日志级别二、使用logback实现日志热加载1.在reource文件夹下新建logback.xml属性2.启动项目,请求接口一、使用Spring Boot Act
·
文章目录
一、使用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的日志的热加载只需要实现配置更改后自动刷新即可
更多推荐
已为社区贡献1条内容
所有评论(0)