我创建了一个log4j2.xml文件。什么时候用于启动和配置记录器?在JVM启动的时候?
答案 0 :(得分:2)
从Log4J1的documentation开始,有两种情况可以启动配置:
BasicConfigurator.configure();
的所有配置log4j库不对其环境做任何假设。 特别是,没有默认的log4j appender。确定无疑 然而,明确定义的情况是Logger的静态inializer class将尝试自动配置log4j。 Java语言 保证一次调用类的静态初始值设定项 在将类加载到内存期间只执行一次。这很重要 要记住,不同的类加载器可能会加载不同的副本 同一个班级。这些同一类的副本被视为 与JVM完全无关。
在log4J2中,他们改变了你以编程方式表达的方式,你可以找到很多方法here。自动方式看不到已更改,因此,它在JVM加载静态块时加载。您可以看到配置文件here的外观。来自log4j2的documentation:
Log4j具有在此期间自动配置的能力 初始化。当Log4j启动时,它会找到所有的 ConfigurationFactory插件并按加权顺序排列 从最高到最低。交付时,Log4j包含四个 ConfigurationFactory实现:一个用于JSON,一个用于YAML,一个 对于属性,一个用于XML。