【发布时间】:2017-01-23 20:12:12
【问题描述】:
我知道应该通过 LogManager.getLogger() 创建一个 log4j 记录器实例,它执行一些反射魔法来检测调用类,因此该名称对于特定日志级别配置很重要。 但是,如果我不喜欢手动创建记录器并希望它像类的所有其他依赖项一样使用 spring 注入呢?当这样做时,调用类当然不是依赖于记录器的类,它是 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;
}
}
【问题讨论】: