logback日志级别动态切换的四种方案
生产环境中经常有需要动态修改日志级别。 现在就介绍几种方案
方案一:开启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,找到指定的服务中某一个节点 然后点击左边日期,进入控制台,如下 这样就能动态修改了,操作比较方便。
总结
在条件允许的情况下建议使用方案四
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
使用BeetleX.NetBenchmark压测TCP,HTTP和Websocket服务
NetBenchmark是针对网络服务压测订制的开源组件,组件提供TCP,HTTP和Websocket的压力测试基础功能;为了更好的符合业务需求组件不提供UI配置信息源的方式(毕竟这种方式只能作有限制测试),而是由使用者来自己制定相应的逻辑代码来进行具体的业务测试。组件基于netstandard2.0,除了可以在.NET CORE上运行外还可以在.NET FX接下来介绍一下组的使用。 引用组件 https://www.nuget.org/packages/BeetleX.NetBenchmark/ Github: https://github.com/IKende/NetBenchmark TCP测试 组件通过Benchmark.Tcp方法来构建一个TCP测压实例,方法如下: public static Runner Tcp<Packet, Token>(string host, int port, int connections, Func<BeetleX.Clients.AwaiterClient, Token, Task> handler) where...
- 下一篇
mysql索引总结
上文 中我们主要介绍了sql语句在server层的执行过程 我们再来分析一下具体的语句在引擎层的执行步骤,CRUD的操作都跟索引相关,我们先了解一下索引 索引 索引的出现其实就是为了提高数据查询的效率,就像书的目录 数据结构 常见的数据结构有 哈希表、有序数组和搜索树 哈希表是一种以键 - 值(key-value)存储数据的结构,我们只要输入待查找的值即 key, 就可以找到其对应的值即 Value。哈希的思路很简单,把值放在数组里,用一个哈希函数 把 key 换算成一个位置,然后把 value 放在数组的对应位置 不可避免地,多个 key 值经过哈希函数的换算,会出现同一个值的情况。处理这种情况的 一种方法是,拉出一个链表 哈希表这种结构适用于只有等值查询的场景 有序数组在等值查询和范围查询场景中的性能就都非常优秀 如果仅仅看查询效率,有序数组就很好。但是,在需要更新数据的时候就 麻烦了,你往中间插入一个记录就必须得挪动后面所有的记录,成本太高 有序数组索引只适用于静态存储引擎 二叉搜索树的特点是:每个节点的左儿子小于父节点,父节点又小于右儿子 当然为了维持 O(log(N)) 的查...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS8编译安装MySQL8.0.19
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Windows10,CentOS7,CentOS8安装Nodejs环境