springboot动态调整日志级别的操作大全

作者:forwardMyLife 时间:2023-11-03 19:31:12 

1.springboot使用log4j2

springboot使用的common-logging,底层兼容各种日志框架如,log4j2,slf4,logback等,默认底层使用的是logback,我们可以去除logback的依赖,引入log4j2的starter,
如下:

springboot动态调整日志级别的操作大全

2.指定日志配置文件和日志等级

(此配置不限于log4j2,也适用于其他日志框架)

在resources目录下加入log4j2的xml配置文件,默认spring-boot会加载classpath下面的名为log4j2.xml,或log4j2-file.xml的日志配置文件。

springboot动态调整日志级别的操作大全

也可以在spring的配置文件中指定需要加载的日志配置文件,以及动态调整各个目录的日志等级


logging:
 config: classpath:log4j2.xml
 level:
   com.ly: debug
   org.springframework : info

该参数可以通过系统参数,或启动参数,覆盖jar内的配置项。


java -jar -Dlogging.config="xxx" test.jar
java -jar test.jar --logging.config="xxx"

3.通过springboot-actuator动态调整日志级别

(适用于生产环境)

spring-boot-actuator是springboot的一个监控工具,它可以以http或JMX的方式暴露一些endPoint,内置的endpoint有 health,info,beans,loggers等。
我们可以通过loggers来动态调整日志级别,无需重启服务。

如果是想使用webEndPoint的话,项目必须包含web-starter相关的依赖,因为actuator 的httpEndPoint是以mvc的方式集成的。

3.1 在pom文件中引入依赖


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

3.2 在配置文件中开启loggers的endPoint端点


management:
 endpoints:
   web:
     exposure:
       include: loggers

3.3 发起http请求改变日志级别

URI默认是 /actuator+endpoint+包名


$ curl 'http://localhost:8080/actuator/loggers/com.example' -i -X POST \
   -H 'Content-Type: application/json' \
   -d '{"configuredLevel":"debug"}'

原理可以看LoggersEndPoint的实现

springboot动态调整日志级别的操作大全

4.spring boot日志初始化原理

springboot动态调整日志级别的操作大全

有个loggingApplicationListener的 * ,监听了spring的事件,读取了spring容器中的日志配置,进行了日志的初始化。

来源:https://blog.csdn.net/lucky_ly/article/details/120693006

标签:springboot,日志级别
0
投稿

猜你喜欢

  • Android用SharedPreferences实现登录注册注销功能

    2023-03-24 21:50:10
  • Android如何创建自定义ActionBar

    2022-11-18 03:57:16
  • 完美解决PermGen space异常的问题

    2023-08-19 07:54:55
  • Java实现宠物商店管理

    2023-09-14 09:14:13
  • Java基础教程之理解Annotation详细介绍

    2022-02-28 10:07:12
  • C#操作配置文件app.config、web.config增删改

    2022-05-21 01:06:47
  • Java多线程回调方法实例解析

    2023-11-04 01:40:01
  • Java多线程下的其他组件之CyclicBarrier、Callable、Future和FutureTask详解

    2023-01-31 14:08:39
  • Android编程四大组件之BroadcastReceiver(广播接收者)用法实例

    2023-07-23 16:45:39
  • 详解Maven settings.xml配置(指定本地仓库、阿里云镜像设置)

    2022-04-09 23:45:14
  • Android开发中使用Intent打开第三方应用及验证可用性的方法详解

    2021-08-12 19:28:47
  • Maven将代码及依赖打成一个Jar包的方式详解(最新推荐)

    2022-03-31 06:52:47
  • java中MultipartFile互转File的方法

    2022-12-14 16:52:09
  • 两个surfaceView实现切换效果

    2021-10-04 15:18:52
  • C/C++ Qt TreeWidget 单层树形组件应用小结

    2022-05-06 16:17:13
  • Android监听手机电话状态与发送邮件通知来电号码的方法(基于PhoneStateListene实现)

    2022-12-07 09:03:44
  • C++ opencv实现在图片上画一条线示例代码

    2021-12-15 12:34:27
  • Java集合教程之Collection实例详解

    2022-12-01 23:45:13
  • Java中Map遍历的九种方式汇总

    2023-05-02 21:57:27
  • Android11文件管理权限申请详细介绍

    2023-08-28 17:41:47
  • asp之家 软件编程 m.aspxhome.com