Java 未成年伐木工人是';使用预定义的RootLogger日志级别(log4j)进行日志记录

Java 未成年伐木工人是';使用预定义的RootLogger日志级别(log4j)进行日志记录,java,logging,log4j,Java,Logging,Log4j,在运行具有多个依赖项(JAR)的多类java应用程序的过程中,我遇到了一个问题,即即使RootLoggers级别设置为“ALL”,次要记录器也没有登录到调试级别 我想用以下作为intendet的mwe来说明这个问题。请注意,原始应用程序(更全面)不会登录到调试级别,即使它应该从其根记录器继承日志级别(ALL)。次要记录器没有与根日志记录在同一级别的原因可能是什么 log4j.xml: <?xml version="1.0" encoding="UTF-8" ?> <!DOC

在运行具有多个依赖项(JAR)的多类java应用程序的过程中,我遇到了一个问题,即即使RootLoggers级别设置为“ALL”,次要记录器也没有登录到调试级别

我想用以下作为intendet的mwe来说明这个问题。请注意,原始应用程序(更全面)不会登录到调试级别,即使它应该从其根记录器继承日志级别(ALL)。次要记录器没有与根日志记录在同一级别的原因可能是什么

log4j.xml:

 <?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

 <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"
 debug = "true"
 threshold = "all">

    <appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender">
       <layout class="org.apache.log4j.PatternLayout">
          <param name="ConversionPattern" value="%d{dd MMM yyyy HH:mm:ss} %5p %c{1} - %m%n"/>
       </layout>
    </appender>

    <appender name="fileAppender" class="org.apache.log4j.RollingFileAppender">
       <param name="append" value="true"/>
       <param name="file" value="out/Marktdaten_Uploader_Tool.log"/>
       <layout class="org.apache.log4j.PatternLayout">
          <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
       </layout>
    </appender>

    <root>
       <level value="all"/>
       <appender-ref ref="consoleAppender"/>
       <appender-ref ref="fileAppender" />
    </root>
 </log4j:configuration>
Class2(包含次要记录器和在调试级别登录的命令):


我修复了由于完全删除log4j.xml并直接在应用程序的main方法中添加logger配置而导致的问题

Class1
Class2
完全一样……谢谢,对了,真的没有人给我提建议吗?我已经在这个问题上投入了相当多的时间-但没有成功。我不知道。。。
Class2
Logger
是否有可能在处理配置之前实例化?这应该被记录到控制台…配置在运行开始时直接被处理,然后类2被实例化。
 package log4j_Test;

 import org.apache.log4j.*;

 public class LoggerStart {

    private static Logger logger = Logger.getRootLogger();

    public static void main(String[] args) {

    logger.debug("message");

    new Class2();

    }
 }
 package log4j_Test;
 import org.apache.log4j.Logger;

 public class Class2
 {
   private static Logger logger = Logger.getLogger(Class2.class);

   Class2()
   {
     logger.debug("My debug message from Class2");
   }
 }