Java Log4j只在主类中记录。我';我做错了?

Java Log4j只在主类中记录。我';我做错了?,java,logging,log4j,Java,Logging,Log4j,我目前正在努力使用log4j登录。我已经创建了一个xml配置文件并成功登录到我的主类: public class Main { static Logger logger = Logger.getLogger(Main.class); /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub

我目前正在努力使用log4j登录。我已经创建了一个xml配置文件并成功登录到我的主类:

public class Main {

    static Logger logger = Logger.getLogger(Main.class);
    /**
     * @param args
     */

    public static void main(String[] args) {
            // TODO Auto-generated method stub
        DOMConfigurator.configure("config/log4j.xml");

        logger.error("Hi");
    }

}
log4j.xml:

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

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

  <appender name="LogAppender" class="org.apache.log4j.FileAppender">
    <param name="file" value="logs/somelogfile.log" />
    <layout class="org.apache.log4j.PatternLayout">
      <param name="ConversionPattern" value="%d [%t] %p - %m%n" />
    </layout>
  </appender>

  <root>
    <priority value="ERROR" />
    <appender-ref ref="LogAppender" />
  </root>

</log4j:configuration>
不幸的是,登录其他类(在另一个包中)不起作用。无论我是否调用DOMConfigurator,都不会记录任何内容。我错过了什么?(记录器始终使用Logger.getLogger(Classname.class)创建)

编辑:


对不起,我是个废物!它起作用了。刚刚认识到,我在另一个类中捕获了错误的异常,因此从未调用记录器。

您需要在log4j.xml文件中设置记录器以指向Appender。以下是一个例子:

<logger name="com.mycompany.apackage.MyClass"> <level value="info"/> <appender-ref ref="appender-name-here" /> </logger>
此外,您的根记录器将只允许错误级别日志记录(priority value=“ERROR”)。

只是确认一下……您是否在DomConfigurator类中创建了记录器?这里使用的日志记录级别是什么?除了编写问题中所示的代码之外,我没有做任何其他事情。我看不出您的代码有任何问题。查看配置文件,可能会发现配置为错误的记录器级别。因此,可能不会记录INFO和DEBUG语句。尝试将记录器级别更改为“调试”,以获取所有信息、调试和错误级别