Java log4j.properties配置问题以及ant配置

Java log4j.properties配置问题以及ant配置,java,eclipse,ant,log4j,Java,Eclipse,Ant,Log4j,我花了很多时间阅读了stackoverflow上关于log4j的帖子,以及它的不同实现方式。我决定采用log4j.properties的方法。当我在eclipse中运行或在ant中运行时,仍然遇到以下问题: log4j:WARN No appenders could be found for logger (My.Class). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://loggin

我花了很多时间阅读了stackoverflow上关于log4j的帖子,以及它的不同实现方式。我决定采用log4j.properties的方法。当我在eclipse中运行或在ant中运行时,仍然遇到以下问题:

log4j:WARN No appenders could be found for logger (My.Class).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
到目前为止,我已经做了两件事:

  • 在/src文件夹的根目录中创建了log4j.properties文件
  • 将log4j.properties文件移动到.java文件所在的包中
这两种情况产生相同的问题。以下是我在课堂上使用的代码:

private static Logger log = Logger.getLogger(My.class);
我已经读了一遍又一遍,属性文件需要在类路径中。我觉得我已经做到了,但也许不是。以下是我的包结构:

src

  • 包装

    • myclass.java

    • log4j.properties(尝试2)

  • 包装B

  • 包装
  • 包装
  • log4j.properties(尝试1)
让我指出,我希望所有包中的每个java文件都使用相同的log4j.properties。如果有一个更简单的方法来配置这比多余的应付道具文件周围让我知道。我在想我得改用资源加载器了

继续我的蚂蚁问题:

我在ant中也有同样的问题。我从apache的站点上读到的内容中添加了我认为需要的内容,以使ant运行w/o问题,但没有效果

这是我的编译目标中的附加条目

<path id="classpath">
    <fileset dir="${lib.dir}" includes="**/*.jar">
        <include name="**/*.properties"/>
    </fileset>
</path>

<target>
<javac srcdir="${source.dir}" destdir="${classes.dir}" classpathref="classpath" debug="true" debuglevel="lines,vars,source" includeAntRuntime="false"/>
<copy todir="${classes.dir}">
    <fileset dir="${source.dir}" excludes="**/*.java"/>
</copy>
</target>

我还应该注意我的junit目标包含了类路径

我还尝试将-Dlog4j.configuration=file:/path添加到文件中,之后仍然看到警告。。。我不知所措

我觉得这会将我的.properties文件复制到ant的类路径中。

对于ant,我添加了:

<path id="properties">
    <dirset dir="${config.dir}"/>
</path>

其中${config.dir}是log4j.properties所在的/src/config文件夹的路径

仍在努力使eclipse工作,它不应该与eclipse中的类路径有太大的不同


谢谢

我发现log4j.properties必须位于类路径的根目录中。 因为我的类路径src在applybc214包中包含测试代码,所以我将log4j.properties放在那里。注意,我也只排除java文件

<property name="src.dir"     value="src/ca/bccampus/tests/applybc2014"/>

<target name="compile">
    <mkdir dir="${classes.dir}"/>
    <javac srcdir="${src.dir}" destdir="${classes.dir}" debug="true" classpathref="classpath"/>        
    <copy todir="${classes.dir}">
        <fileset dir="${src.dir}" excludes="**/*.java"/>            
    </copy>
</target>

是,要提取文件,需要将目录添加到类路径中。另一种方法是ANT路径中的pathelement语句。在不相关的问题上,签出SLF4J和Logback。