Java中logback 自动刷新不生效的问题解决

 更新时间:2023年05月08日 09:59:52   作者:常金家的秋意  
本文主要介绍了Java中logback 自动刷新不生效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、背景

今天心血来潮,准备测试一下项目中 logback 的自动刷新功能,但是测试时发现并不生效。logback 的配置如下:

<configuration  scan="true" scanPeriod="10 seconds">

可以看到,配置了 10s 的自动刷新

二、问题排查

排查这种问题最好的方法,看日志。所以我们需要先开启 logback 自身运行时的日志,在配置项中增加一个 debug 配置,开启方法如下:

<configuration  scan="true" scanPeriod="10 seconds" debug="true">

启动项目,发现输出了如下日志:

image.png

此异常日志不影响项目最终启动成功。重点在这句话:

Failed to rename context [logback] as [nacos] java.lang.IllegalStateException: Context has been already given a name

通过日志猜测,是 nacos 自带的 logback 影响了 springboot 服务中配置的 logback,导致自动刷新不生效

三、问题处理

我们选择禁用掉 nacos 的 logback,在 nacos 官网找了一圈后,发现可以通过以下参数禁用 nacos.logging.default.config.enabled ,推荐两种配置方式:

  • 在启动参数中添加:-Dnacos.logging.default.config.enabled=false
  • 在 springboot 的启动类中,增加如下配置:
public static void main(String[] args) {
    // 禁用 nacos 的默认日志
    System.setProperty("nacos.logging.default.config.enabled", "false");
    SpringApplication.run(OrderApplication.class, args);
}

以上两种方法均可。添加完成后,scanPeriod 的自动刷新就生效了。

另外说一个小坑,如果是在本地的 idea 中测试 logback 的自动刷新,记得在修改了 logback 的配置后,需要对文件进行重新编译(或者直接修改 target 下 classes 中的 logback 文件)

到此这篇关于Java中logback 自动刷新不生效的问题解决的文章就介绍到这了,更多相关Java logback 自动刷新不生效内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JAVA中哈希表HashMap的深入学习

    JAVA中哈希表HashMap的深入学习

    这篇文章主要介绍了哈希表HashMap的深入学习,哈希表是一种非常重要的数据结构,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,本文会对java集合框架中HashMap的实现原理进行讲解。感兴趣的话可以一起来学习
    2020-07-07
  • java基于servlet使用组件smartUpload实现文件上传

    java基于servlet使用组件smartUpload实现文件上传

    这篇文章主要介绍了java基于servlet使用组件smartUpload实现文件上传,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • Java实现图片翻转以及任意角度旋转

    Java实现图片翻转以及任意角度旋转

    这篇文章主要为大家详细介绍了Java实现图片翻转以及任意角度旋转,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01
  • spring-boot-starter-validation 校验参数的实现

    spring-boot-starter-validation 校验参数的实现

    参数校验在很多地方都可以用到,本文主要介绍了spring-boot-starter-validation 校验参数的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • 彻底搞懂Java多线程(三)

    彻底搞懂Java多线程(三)

    这篇文章主要给大家介绍了关于Java面试题之多线程和高并发的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2021-07-07
  • Java动态数组Arraylist存放自定义数据类型方式

    Java动态数组Arraylist存放自定义数据类型方式

    这篇文章主要介绍了Java动态数组Arraylist存放自定义数据类型方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • Java的线程池ThreadPoolExecutor及多种线程池实现详解

    Java的线程池ThreadPoolExecutor及多种线程池实现详解

    这篇文章主要介绍了Java的线程池ThreadPoolExecutor及多种线程池实现详解,ThreadPoolExecutor 使用 int 的高 3 位来表示线程池状态,低 29 位表示线程数量,之所以将信息存储在一个变量中,是为了保证原子性,需要的朋友可以参考下
    2024-01-01
  • SpringBoot集成Prometheus实现监控的过程

    SpringBoot集成Prometheus实现监控的过程

    这篇文章主要介绍了SpringBoot集成Prometheus实现监控,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09
  • Java ThreadLocal的使用详解

    Java ThreadLocal的使用详解

    ThreadLocal是线程私有的局部变量存储容器,可以理解成每个线程都有自己专属的存储容器,用来存储线程私有变量。ThreadLocal 在日常开发框架中应用广泛,但用不好也会出现各种问题,本文就此讲解一下。
    2021-05-05
  • java控制台输出数字金字塔示例分享

    java控制台输出数字金字塔示例分享

    这篇文章主要介绍了java控制台输出数字金字塔的示例,控制台输出的缺陷是数字不能完全居中,只能右对齐或左对齐,大家参考使用吧
    2014-01-01

最新评论