当前位置: 首页 > 知识库问答 >
问题:

log4j2监控间隔使用Spring云配置服务器

姬念
2023-03-14

我试图在应用程序启动时从配置服务器读取log4j2配置。

bootstrap.yml

spring:
  application:
    name: loggingApp
  cloud:
    config:
      uri: http://localhost:8888

logging:
  config: http://localhost:8888/loggingApp/raw/master/loggingApp-log4j2-DEV.xml

应用程序似乎在启动期间得到了正确的配置,因为我看到了适当的日志级别。然而,自动配置似乎不起作用。当我更改日志记录器的日志级别时,它似乎没有在monitorInterval通过后从配置服务器读取更新的配置。我已将monitorInterval设置为10秒。根据文件,最小间隔应为5秒。如果我指向本地驱动器上的文件,而不是配置服务器url,则它工作正常。我尝试使用-Dlog4j。configurationFile作为jvm arg以及spring配置日志记录。配置以查看其中一个是否有效,但都无效。

https://logging . Apache . org/log4j/2 . x/manual/configuration . html # automatic re configuration

https://logging . Apache . org/log4j/2 . x/log4j-spring-cloud-config/log4j-spring-cloud-config-client/index . html

我使用的是Spring启动 2.2.5.RELEASElog4j2 2.13.1Spring云 Hoxton.SR3 版本。

共有1个答案

蒋承教
2023-03-14

我也尝试了同样的方法,但没有成功。似乎<代码>

我使用了Spring执行器刷新方法来完成此任务。但是,这不会自行重新加载配置。因此,可以采取措施来满足所需的目的。在您的Spring应用程序中创建一个调度程序,该调度程序会在指定的时间间隔内点击执行器刷新url,如下所示

@Component
@EnableScheduling
public class RefreshScheduler {

    @Autowired
    private RestTemplate restTemplate;

    @Scheduled(fixedRate = 60000)
    private void postRefreshEndPoint() {
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        HttpEntity<String> entity = new HttpEntity<>(headers);

        restTemplate.postForEntity("http://localhost:8080/actuator/refresh", entity, String.class);
    }
}

这肯定是一种以某种方式实现所需功能的非常肮脏的方式。不过,它是有效的:)

顺便说一句:没有自动刷新不是更好吗?我的论点是:开发人员可能会错误地(或只是为了好玩)在GIT中对配置进行更改。这将导致生产中实时应用的变化。

然而,如果我们将actuator刷新URL作为刷新spring上下文的强制条件,就可以停止这种情况。只有来自生产/操作团队的授权成员才能访问这个刷新url,他们可以决定是否在GIT上的提交完成后实际刷新生产spring beans。

 类似资料:
  • 我正在使用Spring Cloud Config服务器,能够检测来自git存储库的更改并将其传递给配置客户机。 有两种方法,我已经实现了: null 所以两者都工作得很好,那么使用Spring Cloud Bus有什么好处吗?或者在生产环境中,不使用Spring Cloud Bus会有什么问题吗?因为将需要额外的工作来设置RabbitMQ集群(HA)作为生产中的Spring云总线。 谢谢,大卫

  • 我想实现以下目标: 在“开发”模式下,在当前webapp中执行Spring云配置 因此,当前webapp的类路径包含对配置服务器和客户端的依赖关系: 在开发模式下,并在引导程序中具有以下属性。yml,没问题(嵌入式配置服务器已配置并启动) 当不在'dev'模式(例如spring.profiles.active=prod)时,当前的webapp不会启动:它无法自动装配我的属性(我猜嵌入式服务器是以错

  • 本文向大家介绍Spring Boot Admin监控服务如何使用,包括了Spring Boot Admin监控服务如何使用的使用技巧和注意事项,需要的朋友参考一下 Spring Boot Admin 简介 随着开发周期的推移,项目会不断变大,切分出的服务也会越来越多,这时一个个的微服务构成了错综复杂的系统。 对于各个微服务系统的健康状态、会话数量、并发数、服务资源、延迟等度量信息的收集就成为了一个

  • 我正在尝试创建SpringCloudConfigServer,以便使用SSHURI连接到git存储库(bitbucket)。我正在关注Spring云配置 我使用ssh-keygen实用工具生成了密钥对,并粘贴了。发布文件内容在我的bitbucket帐户的ssh部分,但当我运行作为spring启动应用程序的服务器时,我得到无效的privateKey异常。 我也使用了这个堆栈溢出帖子中提供的建议,但是

  • 我正在使用Spring Cloud配置服务器,我需要为每个阶段的产品测试和开发创建一个配置文件,我已经为默认配置文件创建了4个yml文件application.yml,为每个配置文件创建了应用程序-{配置文件},所以我的问题是如何通过环境变量加载特定的配置,并在每个配置文件配置和端口上运行配置服务器,我已经创建了一个bootstrap.yml但我不能解决这个问题。如果有人能指导我完成这些步骤来满足

  • 微服务治理的一个核心需求便是服务可观察性。作为微服务的牧羊人,要做到时刻掌握各项服务的健康状态,并非易事。云原生时代这一领域内涌现出了诸多解决方案。本组件对可观察性当中的重要支柱遥测与监控进行了抽象,方便使用者与既有基础设施快速结合,同时避免供应商锁定。 安装 通过 Composer 安装组件 composer require hyperf/metric hyperf/metric 组件默认安装