首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Log4j2初始化前的Spring

Log4j2初始化前的Spring
EN

Stack Overflow用户
提问于 2022-07-20 15:13:06
回答 1查看 62关注 0票数 0

利用这些技术..。

  • spring-boot-starter 2.7.0
  • spring-boot-starter-data-jpa 2.7.0
  • spring-boot-starter-log4j2 2.7.0

在加载log4j2-spring.xml文件之前,我正在尝试加载@Service或@Component (以哪种方式工作),但无法确定如何使事件顺序发生。

我们有一个存储应用程序自定义配置的数据库。我们有一个@Service,它使用JpaRepository、@Entity等访问基于数据库的数据.

我们的一些Log4j2配置依赖于存储在DB配置上的值。因此,我们编写了一个自定义的Log4j2查找插件,它希望使用我们的“自动查询”服务来查询数据库。这允许我们在log4j2 XML文件中放置占位符,如下所示:

代码语言:javascript
复制
<Kafka name="LogToKafka"
            topic="${spring:spring.profiles.active}-${ourprefix:${spring:ourapp.kafka.region}}-${ourprefix:${spring:ourapp.server.id}}">

在我们的application.properties文件中,我们添加UUID作为属性值,我们的@Service在数据库中使用这些配置查找配置。

代码语言:javascript
复制
spring.application.name=OurApp
ourapp.kafka.region=35a5792d-5218-44cd-87fa-052097c65b92
ourapp.server.id=9f58c5bb-e564-45d9-ae2a-0c1a082a8ac1

在我们的数据库中,这些UUID将计算为运行时值(由Log4J2和应用程序中的其他组件使用),如“used”和"dev-server-10“。

问题是当调用Log4j2查找插件的方法时,我们的@Service没有被实例化,所以我们不能以这种方式查询数据库。

是否有办法确保在Log4j2初始化开始之前实例化我们的@服务?

我已经阅读了数十篇关于Spring事件、上下文、侦听器等的文章,但仍然无法找到如何做到这一点的神奇组合。

EN

回答 1

Stack Overflow用户

发布于 2022-07-27 16:33:16

通过代码步进,我发现Log4j2初始化在Spring上下文准备好之前就开始了。所以没有豆子了。听起来,当Spring上下文准备好之后,我需要让它初始化,然后再通过ready编程来初始化它。希望我的luck...that能变得凌乱:-)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73054152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档