Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Log4j2 LogManager.getLogger()和Spring_Java_Spring_Log4j2 - Fatal编程技术网

Java Log4j2 LogManager.getLogger()和Spring

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

我知道log4j logger实例应该是通过LogManager.getLogger()创建的,它执行一些反射魔法来检测调用类,因此这个名称对于特定的日志级别配置非常重要。 但是,如果我不喜欢手动创建记录器,并且希望它像类的所有其他依赖项一样使用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;
    }
}
公共类SomeClassWithDependencies{
私人最终受抚养人一名受抚养人一名;
私人最终记录器;
@注入
具有依赖项的公共类(
依赖一个依赖一个,

记录器(记录器){/Nevermind。我实际上意识到记录器应该被视为一种组合依赖项。因此,现在我总是为每个类手动创建一个记录器实例。如果我想隐藏具体的日志记录技术,我可以注入一些LoggerFactory,并仍然在构造函数中创建它,以使神奇的反射功能在g