Springboot动态修改日志级别

在开发和运维过程中,我们经常需要调整日志级别来查看不同级别的日志信息。传统的做法是修改配置文件,然后重启应用程序。但是,在分布式系统中,重启应用程序可能比较麻烦,而且也影响了业务的正常运行。

Springboot提供了动态修改日志级别的功能,可以通过HTTP请求来修改日志级别,无需重启应用程序。

实现原理
Springboot动态修改日志级别通过LoggingSystem接口实现。LoggingSystem是一个抽象类,提供了setLogLevel()方法来修改日志级别。

我们可以通过@Resource注解注入LoggingSystem对象,然后调用setLogLevel()方法来修改日志级别。

示例代码

@RestController
@RequestMapping("log")
@Api(tags = "日志")
@RequiredArgsConstructor
public class LogSystemController {
    private final LoggingSystem loggingSystem;

    @GetMapping("/change")
    @ApiOperation(value = "动态修改日志级别")
    @SaCheckRole(value = "system:admin:admin")
    public R<?> mobile(@RequestParam String loggerName, @RequestParam LogLevel level) {
        loggingSystem.setLogLevel(loggerName, level);
        return R.ok();
    }

}

这个示例代码定义了一个LogSystemController控制器,其中包含一个change()方法。change()方法接收两个参数:loggerName和level。loggerName表示要修改的日志名称,level表示新的日志级别。

change()方法通过LoggingSystem对象的setLogLevel()方法来修改日志级别。

测试
启动Springboot应用程序,然后访问http://localhost:8080/log/change?loggerName=com.example.demo&level=DEBUG。

修改日志级别后,可以看到com.example.demo包下的所有日志都被打印成了DEBUG级别。

总结
Springboot动态修改日志级别功能可以方便我们在开发和运维过程中调整日志级别,无需重启应用程序。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Plumelog一个简单易用的java分布式日志组件。支持百亿级别日志从搜集到查询,不用去文件中翻阅日志方便快捷,支持查询一个调用链的日志,支持链路追踪,查看调用链耗时情况,在分布式系统中也可以查询关联日志,能够帮助快速定位问题,简单易用,没有代码入侵,查询界面友好,高效,方便,只要你是java系统,不要做任何项目改造,接入直接使用,日志不落本地磁盘,无需关心日志占用应用服务器磁盘问题,觉得项目好用帮忙点个星星,您的star是我们前进的动力。 Plumelog功能介绍: 1、无入侵的分布式日志系统,基于log4j、log4j2、logback搜集日志,设置链路ID,方便查询关联日志 2、基于elasticsearch作为查询引擎 3、高吞吐,查询效率高 4、全程不占应用程序本地磁盘空间,免维护;对于项目透明,不影响项目本身运行 5、无需修改老项目,引入直接使用,支持dubbo,支持springcloud Plumelog架构: plumelog-core:核心组件包含日志搜集端,负责搜集日志并推送到kafka,redis等队列 plumelog-server:负责把队列中的日志日志异步写入到elasticsearch plumelog-ui:前端展示,日志查询界面 plumelog-demo:基于springboot的使用案例 Plumelog使用方法: 自己编译安装如下 前提:kafka或者redis 和 elasticsearch(版本6.8以上最好) 自行安装完毕,版本兼容已经做了,理论不用考虑ES版本 打包 maven deploy -DskipTests 上传包到自己的私服 私服地址到plumelog/pom.xml改      UTF-8      http://172.16.249.94:4000
在Spring Boot中,我们可以使用logback作为默认的日志框架来记录日志。如果需要添加自定义日志,我们可以按照以下步骤进行操作: 1. 添加依赖 在`pom.xml`中添加如下依赖: ```xml <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> </dependency> ``` 2. 添加日志配置文件 在`src/main/resources`下添加`logback.xml`文件,内容如下: ```xml <?xml version="1.0" encoding="UTF-8"?> <configuration> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <logger name="com.example" level="DEBUG"/> <root level="INFO"> <appender-ref ref="console"/> </root> </configuration> ``` 这里的配置文件格式是logback的标准格式,可以根据需要进行修改。其中: - `appender`定义了日志输出的方式和格式,这里我们定义了一个名为`console`的控制台输出; - `logger`定义了日志记录器,这里我们定义了一个名为`com.example`的日志记录器,并设置了日志级别为DEBUG; - `root`定义了日志输出的根级别,这里设置为INFO。 3. 在代码中使用自定义日志 在代码中使用自定义日志非常简单,只需要使用`org.slf4j.Logger`接口即可。例如: ```java import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class MyService { private static final Logger logger = LoggerFactory.getLogger(MyService.class); public void doSomething() { logger.debug("Debug message"); logger.info("Info message"); logger.warn("Warn message"); logger.error("Error message"); } } ``` 这里我们使用`LoggerFactory.getLogger()`方法获取了一个名为`MyService`的日志记录器,然后可以使用`debug()`、`info()`、`warn()`、`error()`等方法记录不同级别日志。 通过以上步骤,我们就可以在Spring Boot中添加自定义日志了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值