java - log4j:错误无法解析文件

标签 java maven log4j filenotfoundexception

我浪费了很多时间来解决这个问题。但不能。可能很简单。

应用程序的jar文件无法加载log4j的配置文件log4j.xml文件。
这是我正在使用的代码

import org.apache.log4j.xml.DOMConfigurator;
public class LoggerConfig {
    public void configLogger()
    {
        DOMConfigurator.configure("log4j.xml");
    }
}

它是一个 Maven 项目。我的目录结构是:

src
  main
    java
    |  com
    |  |  my
    |  |  |  abc
    |  |  |  |  test
    |  |  |  |  |  LoggerConfig.java
    resource
    |   com
    |   |  my 
    |   |  |  abc
    |   |  |  |  test
    |   |  |  |  |  log4j.xml

我的类路径文件如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" output="target/classes" path="src/main/java"/>
    <classpathentry kind="src" output="target/classes" path="src/main/resources"/>  
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
    <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
    <classpathentry kind="output" path="target/classes"/>
</classpath>

我的 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="false">
  <appender name="file" class="org.apache.log4j.FileAppender">
    <param name="File" value="target/test.log" />
    <param name="Append" value="false" />
    <layout class="org.apache.log4j.PatternLayout">
       <param name="ConversionPattern" value="[%p] [%d{HH:mm:ss.SSS}] %m%n" />
    </layout>
  </appender>
  <appender name="console" class="org.apache.log4j.ConsoleAppender">
    <param name="Target" value="System.out" />
    <param name="Threshold" value="DEBUG" />
    <layout class="org.apache.log4j.PatternLayout">
      <!-- The default pattern: Date Priority [Category] Message\n -->
      <param name="ConversionPattern" value="[%p] [%d{HH:mm:ss.SSS}] %m%n" />
    </layout>
  </appender>
  <root>
    <priority value="INFO" />
    <appender-ref ref="console" />
    <appender-ref ref="file" />
  </root>
</log4j:configuration>

感谢任何帮助..

最佳答案

根据 DOMConfigurator code 传递给它的参数被视为文件名。而不是尝试使用类路径资源

  public void configLogger()
    {
        URL u = getClass().getClassLoader().getResource("com/my/abc/test/log4j.xml");
        DOMConfigurator.configure(u);
    }

关于java - log4j:错误无法解析文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16911535/

相关文章:

java - 如何将 Maven 添加到现有的 IntelliJ Android 项目

java - 如何通过属性文件使用 log4j 在日志文件中追加输出和错误流打印

java - 无法使用 ucanaccess 创建可更新的结果集

java - 连接类别组合框和子类别组合框

java - Postgres spring boot R2dbc应用程序中缺少DatabaseClient

regex - perl正则表达式通过关键字查找Java StackTrace

java - 如何使用 java log4j 将日志文件保存在按月文件夹中?

java - 关于静态和非静态变量访问的混淆

maven - jenkins maven 多模块作业中出现重复的 checkstyle 警告

java - 使用maven将第三方代码添加到具有依赖项的eclipse项目中?