gpt4 book ai didi

java - Log4j2 LogManager.getLogger() 与 Spring

转载 作者:行者123 更新时间:2023-12-03 23:14:38 24 4
gpt4 key购买 nike

我知道应该通过 LogManager.getLogger() 创建一个 log4j 记录器实例,它会执行一些反射魔法来检测调用类,因此名称对于特定的日志级别配置很重要。但是,如果我不喜欢手动创建记录器并希望它像该类的所有其他依赖项一样使用 spring 注入(inject)怎么办?这样做时,调用类当然不是依赖于记录器的类,而是 spring(某个工厂)。所以检测类名不再起作用了。问题甚至可以更简单:log4j2 类名检测是否以某种方式与 IoC 一起工作?

public class SomeClassWithDependencies {
private final DependencyOne dependencyOne;
private final Logger logger;

@Inject
public SomeClassWithDependencies(
DependencyOne dependencyOne,
Logger logger) { // <- this is created by spring and operates on the name of some spring factory instead of SomeClassWithDependencies
this.dependencyOne = dependencyOne;
this.logger = logger;
}
}

最佳答案

没关系。我实际上意识到记录器应该被视为一种组合依赖。所以现在我总是为每个类(class)手动创建一个记录器实例。如果我想隐藏具体的日志记录技术,我可以注入(inject)一些 LoggerFactory 并仍然在构造函数中创建它,以使神奇的反射工作正常进行。

关于java - Log4j2 LogManager.getLogger() 与 Spring,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39517240/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com