4

我花了很多时间阅读 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);

我一遍又一遍地阅读属性文件需要在类路径中。我觉得我已经做到了,但也许没有。这是我的包结构:

源代码

  • 包A

    • 我的类.java

    • log4j.properties(尝试 2)

  • 包B

  • 包C
  • 包装D
  • log4j.properties(尝试 1)

让我指出我希望所有包中的每个 java 文件都使用相同的 log4j.properties。如果除了冗余处理 props 文件之外还有更简单的方法来配置它,请告诉我。我在想我必须切换到使用资源加载器。

继续我的蚂蚁问题:

我在蚂蚁中有完全相同的问题。我已经从我在 apache 网站上阅读的内容中添加了我认为需要的内容,以使 ant 运行无问题,但无济于事。

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

<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 的类路径中。

4

2 回答 2

1

我发现我的 log4j.properties 必须在类路径的根目录中。由于我的类路径 src 在 applybc2014 包中包含测试代码,因此我将 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>
于 2014-07-09T19:23:27.240 回答
0

对于蚂蚁我补充说:

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

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

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

谢谢!

于 2013-07-08T15:00:35.797 回答