首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Spring Boot中强制特定的记录器

在Spring Boot中强制特定的记录器
EN

Stack Overflow用户
提问于 2021-06-30 22:01:49
回答 2查看 91关注 0票数 0

我们希望在Spring Boot2.4.x中从标准logback切换到log4j。对于大多数模块来说,通过简单地删除logback的依赖项是很容易的,但也有一些模块使用pact-jvm作为影子jar依赖项,以便能够从单元测试创建pact文件。

现在,奥德赛开始了,因为pact需要logback,并且在类路径上使用pact-jar,Spring识别出它正在寻找的logback类,并决定在测试中使用logback而不是log4j作为记录器。

有没有可能创建像log bean或隐藏配置这样的东西,允许强制Spring使用log4j而不是logback,如果logback在类路径上?

Pact在这一点上应该不是问题,因为服务器是作为gradle的独立服务器启动的。我们只需要依赖项就能启动所有东西,并让类可用。

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2021-06-30 22:37:10

您可以按照以下步骤使用spring boot配置log4j

  1. 将log4j依赖项添加到相应类中的模块
  2. 创建记录器对象,并使用记录器对象记录消息。

代码语言:javascript
复制
org.apache.log4j.Logger logger = org.apache.log4j.Logger.getLogger(<YourClassName>.class);

spring boot模块/项目中的

  1. 在资源中添加log4j.properties文件,以便在运行时可以在类路径中使用该文件。以下是log4j.properties

的示例内容

代码语言:javascript
复制
log4j.rootLogger=INFO, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

在构建时,请确保弹簧引导模块捆绑了log4j jar。

一旦spring boot在类路径上找到了log4j jar和log4j.properties,它就能够为您初始化log4j记录器。

票数 0
EN

Stack Overflow用户

发布于 2021-06-30 23:17:39

是的,这是很清楚的。问题是,Spring Boot自动配置正在加载slf4j的记录器(对不起,忘了这一点)。因此,它在这里按顺序迭代支持的候选对象:

  • logback
  • log4j
  • apache-log-commons

而且它似乎并不查找bean,它只是通过反射查找类。

如果我们现在与pact服务器一起启动应用程序进行测试,Spring Boot会解析一个Append*类,并认为这必须是我们选择的记录器。它创建logback实例,该实例正在搜索其配置,但随后它失败了,因为该配置是用于log4j的。

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

https://stackoverflow.com/questions/68196287

复制
相关文章

相似问题

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