动态修改java日志等级

Java动态日志级别变更框架源码实现(支持:Log4j/JDK Logger/Logback等),教你如何开启线上debug日志。 在实际开发运维过程中,对于日志我们都会遇到如下痛点。我们尝尝会遇到,突然线上出了某个问题。然后大家首先会想这个问题愈发测试环境可以复现么?如果不能复现,大家就会提出一个戳中大家痛点的问题”线上可以看debug日志么?“。然后大家都会想,要是线上能开debug日志就好了。然后想象是没好的, 现实是骨感的。为什么线上不能开debug想必就不用我在此哔哔了吧。 阅读详情

最近线上的项目出现了问题,需要查看日志,但是线上是打印的info级别日志,查询不到用户请求的详细日志信息,需要暂时停止项目,修改日志级别为debug,在启动项目,排查到问题后再次修改日志级别为info,很是麻烦,并且造成服务暂时不可用,所以就寻思着能不能通过接口请求的形式动态修改日志级别,没想到还真给整出来了,下面直接上代码

/**
 * @Auther: hwm
 * @Date: 2019/6/14 09:48
 * @Description:
 */
@Api(description = "改变日志等级")
@RestController
@RequestMapping("/changeLogLevel")
@Slf4j
public class ChangeLogLevelController {

    @ApiOperation("修改日志等级为info级别")
    @RequestMapping(value = "/logLevelToInfo", method = RequestMethod.GET)
    @ResponseBody
    public ResultPageVo logLevelToInfo() {

        LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
        Logger logger = loggerContext.getLogger("root");
        ((ch.qos.logback.classic.Logger) logger).setLevel(Level.INFO);
        log.info("============================================修改日志等级为info级别");
        log.info("============================================修改日志等级为info级别");
        log.info("============================================修改日志等级为info级别");
        log.info("============================================修改日志等级为info级别");

        return ResultPageVo.success();
    }

    @ApiOperation("修改日志等级为debug级别")
    @RequestMapping(value = "/logLevelToDebug", method = RequestMethod.GET)
    @ResponseBody
    public ResultPageVo logLevelToDebug() {

        LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
        Logger logger = loggerContext.getLogger("root");
        ((ch.qos.logback.classic.Logger) logger).setLevel(Level.DEBUG);
        log.debug("============================================修改日志等级为debug级别");
        log.debug("============================================修改日志等级为debug级别");
        log.debug("============================================修改日志等级为debug级别");
        log.debug("============================================修改日志等级为debug级别");

        return ResultPageVo.success();
    }
}

上面代码请求相应的接口就能够成功的修改日志等级了,修改后可以实时查看日志的输出效果,排查完问题后再次请求接口把日志等级修改成info级别

声音叙事系统设计:从三层信息模型到工程化音频制作实践 在多媒体内容开发中,声音设计是构建沉浸式体验的核心技术之一。其原理在于通过系统化的音频元素分层处理,将抽象叙事转化为可感知的听觉信号,从而突破单一媒介的信息承载限制。从技术价值看,优秀的声音架构不仅能提升内容的情感传达效率,更能像软件工程一样实现模块化、可迭代的开发流程。在广播剧、游戏、虚拟现实等应用场景中,这种分层模型——通常包含基础环境层、叙事驱动层和语义增强层——通过空间音频、动态混响、声音符号化设计等技术手段,实现了信息密度的倍增与用户体验的深化。以《星火燎原之时》为例,其精密的“声音叙事系统”正是 阅读详情

相关推荐

决策树(分类树、回归树)

决策树 前言:第一篇博客,最近看完决策树,想着归纳一下,也方便自己以后回顾。写的会比较全面一些,可能会有很多不太正确的地方,欢迎大家交流指正 : ) 决策树模型: 决策树模型是运用于分类以及回归的一种树结构。决策树由节点和有向边组成,一般一棵决策树包含一个根节点、若干内部节点和若干叶节点。决策树的决策过程需要从决策树的根节点开始,待测数据与决策树中的特征节点进行比较,并按照比较结果选...

你午睡了吗 9万+

java代码实现LogBack动态输出日志【无配置文件纯代码】

需求:       需要传入某一个文件或者类或者方法的名字,生成对应日志文件,且每一个传入名字的文件单独有一个文件夹,子文件夹为日期,日期文件夹里面包含warn.log,error.log,debug.log,info.log。通过过滤器实现只打印对应级别的日志。   遇到的问题:       度娘了很久,网上关于logback的几乎都是xml进行配置的,但是经过尝试,xml配置的方式不能直接...

GoodIdea 2663

EPLAN中3D宏文件的创建与优化技巧(以开关电源为例)

本文以开关电源为例,详细讲解了在EPLAN中创建和优化3D宏文件(.ema)的全流程。从搭建宏项目、导入模型,到精确定义安装面、调整视野方向,再到定义3D连接点并关联部件库,旨在帮助电气工程师在设计阶段实现精准布局、避免安装冲突,从而提升设计效率与质量。

weixin_29219539的博客 547

JAVA动态设置日志,Logback动态修改日志级别的方法

问题提出:一般在生产环境上,日志的级别是INFO以上,但有时候程序出现问题(如SQL报错),少量日志不能尽快定位问题,这时候可以动态修改日志级别到DEBUG,打印更多日志后可以快速定位到问题。解决方法:定义动态修改日志级别的接口:这种方法的好处是不用修改配置文件,排错后再次调用接口把日志级别修改回去;坏处是需要在代码中写死指定哪些包要修改日志级别。示例代码如下:@RestControllerpub...

weixin_34500880的博客 1779

海康威视GigE工业相机的python调用demo

默认路径安装完成后,在路径C:\Program Files (x86)\MVS\Development\Samples\Python\BasicDemo下的BasicDemo.py中,海康威视官方提供了基本的调用方法,本文也是基于这个修改的。BasicDemo.py提供了通过枚举选择相机的方法,在官方的另一个DEMO:ConnectSpecCamera.py中提供了另一种不通过枚举,直接访问特定IP相机的方法,也可以参考。另外,如果每台相机都定义了唯一的用户定义名,也可以通过用户定义名来区分相机。

xulibo5828的博客 2108

vivado时序分析 实例

vivado时序分析实例建立余量保持余量 建立余量 保持余量

Bunny9__的博客 1万+

java为程序加上日志_给你的Java应用程序加上日志功能

给你的Java应用程序加上日志功能来源:互连网作者:佚名时间:2006-04-07Tag:点击:每个应用程序都需要某种方式同外部世界进行通信并收集数据。这可以利用数据库通过接口来实现,也可以用文本文件来完成。在面对这么多选择的时候,使用普通文本文件来收集和调试数据似乎已经被遗忘了。尽管文本文件无法像最新、最酷的技术那样带给你快感,但是它们(确实)是收集数据和诊断应用程序故障的有效手段。Log4j程...

weixin_30764045的博客 660

无线充电效率从75%到90%+:深入拆解LCC补偿网络如何成为电动汽车和智能车竞赛的‘稳压器’

本文深入探讨了LCC补偿网络如何显著提升无线充电效率至90%以上,成为电动汽车和智能车竞赛中的关键技术。通过分析LCC的三元件结构和双模式切换特性,揭示了其在负载突变和线圈错位情况下的稳定性优势,并展示了实际应用中的效率提升和产业化挑战。

weixin_42528191的博客 397

利用代码动态修改log4j

利用代码动态修改log4j在项目中,对log的输出有多种多样的要求,下面具体分析一下动态log文件名输出的。:一、按照用户ID来生成log,可以根据每个用户ID来动态生成logger。代码如下:import org.apache.log4j.Level; import org.apache.log4j.Logger; import org.apache.log4j.PatternLayout; im

csky的博客 2594

postgresql 数据库 timescaledb 函数time_bucket_gapfill()报错解决及更换 license

最近在工作中使用postgresql 和 timescaledb 的time_bucket_gapfill()函数 报错,让更换license,在网上找了一大圈,没有找到,最后解决了这个问题,这篇文章记录我的解决办法查看timescaledb.license参数命令:show timescaledb.license;修改命令: 结果不行,报错如下:lter system set timescaledb.license=‘timescale’;那只能换包了如果出现上面那种情况,那我们只能先从官网上下载带 '

yang_z_1的博客 3249

SAP PS项目计划成本与预算设计:从概念到可用性控制详解

在项目管理中,成本计划与预算管控是决定项目成本能否受控的两个核心概念。成本计划反映“预计花费”,预算是“授权上限”,两者在WBS结构上既相互关联又彼此独立。SAP PS通过计划版本管理不同口径的估算,并借助可用性控制机制对采购申请、采购订单等业务操作进行事前拦截与提示,从而实现从“事后追认”到“事前控制”的转变。理解计划成本作为预算基线、预算作为控制阀门的原理,能够帮助实施顾问和项目管理者合理设计项目财务流程。在大型工程、研发或总包项目中,明确WBS层级、预算对象和检查规则,可有效避免超支风险。围绕SAP

weixin_33146151的博客 359

SpringBoot动态修改Logger的日志级别

springboot默认使用logback作为日志框架。logback提供了获取logger,修改logger日志级别的接口。 这里用一个Controller演示:获取logger,动态修改logger级别 actuator 其实也提供了管理日志的endpoint 环境 & 版本 Java17 SpringBoot 2.6.1 TestController package io.springboot.example.web.controller; import java.util.Lin

csdn_0xFFFF的博客 1473

基于电能质量治理的场景实例:统一电能质量调节器(UPQC)与并网逆变器集成

本文通过Simulink平台,详细演示了统一电能质量调节器(UPQC)与并网逆变器的集成系统建模与仿真过程。主要内容包括:1)系统架构设计,包含光伏并网系统、非线性负载和电压扰动源;2)UPQC主电路设计,包括串联/并联单元拓扑和控制策略实现;3)与并网逆变器的能量交互与协同控制逻辑;4)典型电能质量问题的仿真测试场景。结果表明,该集成系统能有效治理电压暂降(维持负载电压380V±2%)和电流谐波(电网THD<3%),直流母线电压稳定在800V±5V。该系统为应对复杂电能质量问题提供了"电压

xiaoheshang_123的博客 310

动态代理-实现操作对象和业务对象解耦

在业务对象执行某个方法时,在业务方法前和方法后均让操作者执行相应操作(切面编程), 操作者和业务者均面向接口编程,并在代理类中 实现解耦。即操作方法和业务方法的执行能够最大限度独立。 1. 先定义日志等级: [code="java"]package boke.javamode.log; /** * 日志等级 * * @since jdk1.6 * @author...

JaryBlueEye的专栏 399

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

基于Spring框架开发的Web程序,如何动态修改日志级别

背景: 线上环境日志级别一般较高,出现故障定位过程中,期望输出尽可能完毕的日志信息便于调试。日志级别动态修改就是一个不错的思路,幸运的是基于Spring框架开发的Web程序,借助spring-web包中org.springframework.web.util.Log4jConfigListener类可以轻松实现。 原理: 参考,Log4jConfigListener动态改变记录级别及实现

1893

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

不需要重启服务动态修改切换log4j日志等级

功能点说明: 不需要重启tomcat服务,使用浏览器get请求接口的方式直接切换log4j的日记等级,通常常用的是INFO级别切换到DEBUG,查看错误问题,记得不使用在切换回INFO,否则在DEBUG下会一直输入内容,长时间会造成服务器内存空间被占用。 直接创建Controller文件,如果不想登录账户密码就切换,并且有shiro权限的情况下,记得将该Controller接口在shiro中设置为anon。 import java.io.Writer; import java.util.Enumeratio

知世故而不世故 1220

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

10分钟写个动态改变日志等级的接口

故事背景是这样的,最近入职了家公司,由于公司规模不大,正式环境居然是不打log日志的,原因就是如果打了日志,那么流量大,会导致日志文件太大,占用过多的内存,但是没有日志又很难定位问题,那有没有一个在查问题的时候就把日志等级动态调整一下的方法呢?基于这个问题有了今天的这篇文章。 本文难度不高,但需要有一定spring的源码知识,话不多说,开搞!(不想看过程的可以从后往前看!) <dependencies> <dependency...

weixin_42258418的博客 454

动态修改Log4J和Logback的日志级别

Java项目开发调试或维护过程中,为方便问题快速定位,很多时候都会在代码中增加相关日志,但为了减少日志输出量,在生产环境通常都提高了日志的级别,导致生产环境出现问题时调试信息没有打印出来,排查定位问题比较困难。 那么,能否动态修改日志的级别?答案是肯定的。当出现问题时,动态降低日志级别,输出相关的调试信息;问题解决后,动态提高日志级别,屏蔽相关的调试信息。...

点点滴滴 3859

Spring Boot 日志等级详解

SpringBoot日志等级详解:包含TRACE、DEBUG、INFO、WARN、ERROR五个级别(FATAL用ERROR处理),级别越高信息越重要。默认INFO级别,遵循包含性规则(设置级别后更高等级自动输出)。可通过配置文件、命令行或Actuator动态配置,开发建议用DEBUG,生产用INFO/WARN。注意避免高频操作记录敏感信息,合理平衡日志量与性能开销。常见问题包括临时启用DEBUG、路径拼写校验等,可通过指定参数或检查配置解决。

m0_66119504的博客 1146

Springboot-2.1 系列 - 1、日志配置和动态日志等级设置

版权声明:转载请注明出处 https://blog.youkuaiyun.com/cowbin2012/article/details/85235931 </div> <link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/ck_ht...

c0tianning的专栏 1101

Mybatis日志等级调整、日志框架实现

深入解析MyBatis日志系统的核心机制,带你掌握从基础配置到动态调优的完整解决方案。

Mu_Sanchui的博客 418

logback日志等级动态配置

logback动态配置日志等级

qq_43438917的博客 3008

3分钟解决Glide缓存调试难题:应用内日志等级动态配置指南

Glide是Android平台上专注于流畅滚动的图片加载和缓存库,在开发过程中,缓存调试往往是开发者面临的一大挑战。本文将为你提供一种简单快速的方法,通过动态配置日志等级来解决Glide缓存调试难题,帮助你轻松定位和解决问题。 ## 为什么需要动态配置Glide日志等级 在Android应用开发中,图片加载和缓存是常见的功能模块,而Glide作为一款优秀的图片加载库,其缓存机制对于提升应用性能

gitblog_00609的博客 658

SpringBoot不重启修改日志级别【Slf4j、Logback动态日志级别】

SpringBoot不重启修改日志级别【Slf4jj动态日志级别】 前言 需求: 线上日志级别高,而定位问题时需要低级别日志便于分析问题 功能:不重启服务器,提供设置页,手动触发Slf4j 项目日志级别变化 扩展:可将此功能放入后台管理系统中,管理员只需,点选日志级别即可切换服务器的日志级别。 栗子 Like this: 或者使用命令行 curl 项目访问地址/sys/log/level/error curl 项目访问地址/sys/log/level/warn curl 项目访问地址/sys/log/le

大火yzs 3173

写了个开源小中间件——运行时动态日志等级开关

a middleware project for log level change during application runtime

阿丸笔记 406
上一篇: mongoTemplate查询数据方式
下一篇: mongoTemplate通过upsert实现数据存在就更新,不存在就插入数据
hwmhehe
博客等级 码龄13年 86粉丝 106原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值