Java Log4j只在主类中记录。我';我做错了?
我目前正在努力使用log4j登录。我已经创建了一个xml配置文件并成功登录到我的主类: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
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语句。尝试将记录器级别更改为“调试”,以获取所有信息、调试和错误级别