生产环境中经常有需要动态修改日志级别。
现在就介绍几种方案

方案一:开启logback的自动扫描更新

配置如下

<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!-- configuration标签 scan属性代表logback框架会定时检测改配置文件是否有发生改动,如果有则更新为最新配置-->

然后就将修改的配置文件拷贝到app.jar的同级目录下config/logback.xml

方案二:自定义api

代码如下

/**
* log api
* @author lipeng
*/
@RequestMapping("/api/log")
@RestController
public class LogbackController { private Logger log = LoggerFactory.getLogger(LogbackController.class); /**
* logback动态修改包名的日志级别
* @param level 日志级别
* @param packageName 包名
* @return 当前的日志级别
* @throws Exception
*/
@RequestMapping(value = "/setlevel")
public String updateLogbackLevel( @RequestParam(value="level") String level,
@RequestParam(value="packageName",defaultValue = "-1") String packageName) throws Exception {
ch.qos.logback.classic.LoggerContext loggerContext =(ch.qos.logback.classic.LoggerContext) LoggerFactory.getILoggerFactory();
Logger logger= null
if(packageName.equals("-1")) {
// 默认值-1,更改全局日志级别;否则按传递的包名或类名修改日志级别。
logger= loggerContext.getLogger("root")
} else {
logger= loggerContext.getLogger(packageName)
}
logger.setLevel(ch.qos.logback.classic.Level.toLevel(level));
return logger.getLevel();
} }

方案三:springboot引入Actuator

1、pom.xml增加相关依赖

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

1、配置文件中增加配置
如果是springboot1.X,

management.security.enabled=false

如果是springboot2.X,则参考如下配置

management:
endpoint:
health:
show-details: "ALWAYS"
endpoints:
web:
exposure:
include: "*"

3、查看级别
我们可以发送GET 请求到 http://localhost:8080/actuator/loggers 来获取支持的日志等级,以及系统(ROOT)默认的日志等和各个包路径(com.xxx.aa等)对应的日志级别。

4、修改日志级别
通过 http://localhost:8080/actuator/loggers 端点提供的 POST 请求,修改包路径com.xxx.aa的日志级别为DEBUG:

发送POST 请求到 http://localhost:8080/actuator/loggers/com.xxx.aa,其中请求 Body 的内容如下:

{
"configuredLevel": "DEBUG"
}

再用GET 访问 http://localhost:8080/loggers/com.xxx.aa查看当前的日志级别:


{
configuredLevel: "DEBUG",
effectiveLevel: "INFO"
}

方案四 集成springcloudadmin来动态修改配置

springcloudadmin安装部署我就不做描述了,网上很多。
1、引入admin依赖

		<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

2、登录springcloudadmin,找到指定的服务中某一个节点

然后点击左边日期,进入控制台,如下

这样就能动态修改了,操作比较方便。

总结

在条件允许的情况下建议使用方案四

logback日志级别动态切换的四种方案 荐的更多相关文章

  1. logback日志级别动态切换的终极方案(asm使用)

    背景 一切皆有因果,所有事情,都有事件驱动.本方案的日志级别切换是由这样的背景下产生的: 单个生产环境上,有几百近千个微服务 日志级别切换不重启服务,要求即时生效果 由业务开发人员去修改代码或增加相关 ...

  2. springboot中动态修改logback日志级别

    springboot中动态修改logback日志级别 在spring boot中使用logback日志时,项目运行中,想要修改日志级别. 代码如下: import org.slf4j.Logger; ...

  3. 基于Vue SEO的四种方案

    基于Vue SEO的四种方案 https://segmentfault.com/a/1190000019623624?utm_source=tag-newest

  4. 【Logback日志级别】动态调整Logback的日志级别

    一.导入 Logback作为目前一个比较流行的日志框架,我们在实际项目经常使用到该框架来帮助我们打印日志,以便我们可以更快速地获取业务逻辑执行情况.定位系统问题. 常用的日志打印一共有5种级别控制,优 ...

  5. js动态引入的四种方式

    index.html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http:// ...

  6. 关于logback日志级别的配置

    logback如果需要灵活的配置日志级别,需要结合过滤器,<filter></fiter>这个标签.需要注意的是,过滤器过滤的基础是在root标签的配置基础上进行的. 过滤器可 ...

  7. 四种方案:将OpenStack私有云部署到Hadoop MapReduce环境中

    摘要:OpenStack与Hadoop被誉为继Linux之后最有可能获得巨大成功的开源项目.这二者如何结合成为更猛的新方案?业内给出两种答案:Hadoop跑在OpenStack上或OpenStack部 ...

  8. OpenStack部署到Hadoop的四种方案

    随着企业開始同一时候利用云计算和大数据技术.如今应当考虑怎样将这些工具结合使用.在这样的情况下,企业将实现最佳的分析处理能力.同一时候利用私有云的高速弹性 (rapid elasticity) 和单一 ...

  9. Pytest测试框架一键动态切换环境思路及方案

    前言 在上一篇文章<Pytest fixture及conftest详解>中,我们介绍了fixture的一些关键特性.用法.作用域.参数等,本篇文章将结合fixture及conftest实现 ...

  10. Netty解决粘包和拆包问题的四种方案

    在RPC框架中,粘包和拆包问题是必须解决一个问题,因为RPC框架中,各个微服务相互之间都是维系了一个TCP长连接,比如dubbo就是一个全双工的长连接.由于微服务往对方发送信息的时候,所有的请求都是使 ...

随机推荐

  1. 哈啰面试:说说Dubbo运行原理?

    Dubbo 是一款高性能.轻量级的开源 RPC(远程过程调用)框架,主要用于构建分布式服务和微服务架构.那 Dubbo 又是如何运行的呢?让我们一起来看. 1.核心组件 要说 Dubbo 运行流程就不 ...

  2. spring之NamedParameterJdbcTemplate返回自增列值

    以前使用JdbcTemplate来获取自增列的值,现在发现NamedParameterJdbcTemplate也可以,而且后者大部分情况下,其实更加方便. 这种方便主要是在于代码维护方面:我们更加习惯 ...

  3. 12-CentOS7安装与管理数据库mariadb

    关于Mariadb Mariadb和MySQL是同一个制作团队,命令几乎一样. 在centos中安装 yum -y install mariadb mariadb-server firewall-cm ...

  4. ISCSI配置与挂载

    ISCSI介绍 iSCSI使用 TCP/IP 协议,来提供网络存储. 客户端挂载后,可以对其进行分区,进行格式化,就好像是安装在本机上的硬盘一样. 为了保证传输速率,通常采用光纤. 配置环境 Cent ...

  5. 简单测下C++20 vector array lambda 的常数

    某天打了一下 CF,遇到了一道 https://codeforces.com/contest/1806/problem/E 这里需要卡常. 于是在 C++20(64) 下测出来了一些神奇的结果. 结果 ...

  6. Nginx+Fail2ban 实现同一ip在一分钟内连续三次请求同一接口并响应成功时进行封禁

    1. 安装 Fail2Ban 和 Nginx 如果尚未安装 Fail2Ban 和 Nginx,可以使用以下命令进行安装: # CentOS默认的仓库中可能不包含Nginx,所以需要添加EPEL(Ext ...

  7. 关于ZYNQ-7000中断调试一点感想

    背景 在ZYNQ 平台下,需要对各种需要的底层接口进行初始化. 我依次调试了很多驱动,从最简单的网口到USB:再到读写PL端的寄存器(通过AXI总线,内存映射读写物理地址实现),到中断的时候一直卡着不 ...

  8. Python_18 unittest和随机数

  9. B 站和小红书又又又崩了,罪魁祸首竟然又是他。。。

    大家好,我是凌晨. 今天上午10点左右,我打开B站发现无法刷新视频列表和评论区,收藏夹和弹幕也均不可用. 原以为是手机网络问题,换网络重启手机都还是不行,第一时间打开微博,果然,B站崩了的新闻荣登榜首 ...

  10. 一套基于 Ant Design 和 Blazor 的开源企业级组件库

    前言 今天大姚给大家分享一套基于Ant Design和Blazor的开源(MIT License).免费的企业级组件库(喜欢Ant Design风格的同学推荐使用):Ant Design Blazor ...