【问题标题】:how can I rectify the method error while using Log4j API in java class?在 java 类中使用 Log4j API 时如何纠正方法错误?
【发布时间】:2013-12-11 11:41:51
【问题描述】:

我是 Log4j API 的新手。因此,我配置了属性文件并编写了示例程序来测试它。下面是我的配置文件和测试类。

< ?xml version="1.0" encoding="UTF-8" ?>
<!--<span class="hiddenSpellError" pre=""-->DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
xmlns:log4j="http://jakarta.apache.org/log4j/">

<appender name="console" class="org.apache.log4j.ConsoleAppender">
<param name="Target" value="System.out"/>
<layout class="org.apache.log4j.PatternLayout">
    -5p %c %x - %m%n"/>
</layout>
</appender>

<appender name="fileAppender" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="./logs/testlog.log"/>
<layout class="org.apache.log4j.PatternLayout">
-5p %c %p - %m%n"/>
</layout>
</appender>

<root>
<priority value ="trace"></priority>
<appender-ref ref="console"></appender>
<appender-ref ref="fileAppender"></appender>
</root>
</log4j:configuration>

样本测试类是

public class Log4jExample {
private static Logger logger=Logger.getLogger("Project_name");
public static void main(String[] args){
try{
  FileInputStream fstream = 
                     new FileInputStream("D:\\textfile.txt");
  // use DataInputStream to read binary NOT text
  // DataInputStream in = new DataInputStream(fstream);
  BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
  String strLine;
  while ((strLine = br.readLine()) != null){
 System.out.println (strLine);
  }
  in.close();
 }catch (FileNotFoundException fe){
 logger.error("File Not Found",fe);
    logger.warn("This is a warning message");
    logger.trace("This message will not be logged since log level is set as DEBUG");
 }catch (IOException e){
 logger.error("IOEXception occured:", e);
}
}

}

我在 netbeans 中工作,它显示 logger.error、logger.trace、logger.warn 是“无法归档符号”错误。请就这个问题提出建议。

【问题讨论】:

  • 将 log4j 添加到你的类路径
  • 确保导入org.apache.log4j.Logger
  • 收到此错误。 java.lang.NoClassDefFoundError: org/slf4j/ILoggerFactory

标签: java logging


【解决方案1】:

确保您的类路径中有 Log4j 并且您的代码可以编译。还要确保您的配置文件是正确的。您发布的文件是无效的 xml。查看Log4j xml format 文档。这是语法更正的版本:

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

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

    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <param name="Target" value="System.out"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="-5p %c %x - %m%n"/>
        </layout>
    </appender>

    <appender name="fileAppender" class="org.apache.log4j.RollingFileAppender">
        <param name="File" value="./logs/testlog.log"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="-5p %c %p - %m%n"/>
        </layout>
    </appender>

    <root>
        <priority value="trace"/>
        <appender-ref ref="console"/>
        <appender-ref ref="fileAppender"/>
    </root>
</log4j:configuration>

【讨论】:

  • 收到 java.lang.NoClassDefFoundError: org/slf4j/ILoggerFactory 错误
  • 这表明你正在使用 slf4j。确保你在类路径中有它。
猜你喜欢
  • 2013-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多