我花了很多时间阅读关于log4j的stackoverflow上的帖子以及它可以实现的不同方式。我决定采用log4j.properties的方法。当我从日食或蚂蚁中跑出来时,我仍然遇到问题:
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.
到目前为止,我做了两件事:
两个实例都会产生同样的问题。这是我在班上使用的代码:
private static Logger log = Logger.getLogger(My.class);
我已经反复阅读过属性文件需要在类路径中。我觉得我已经做到了,但也许不是。这是我的包结构:
的src
程序包A
myclass.java
log4j.properties(尝试2)
packageB
让我指出我希望所有软件包中的每个java文件都使用相同的log4j.properties。如果有一个更简单的方法来配置这个除了冗余应对道具文件让我知道。我以为我必须切换到使用资源加载器。
转到我的蚂蚁问题:
我在蚂蚁中遇到完全相同的问题。我已经添加了我认为我需要的东西,从我在apache的网站上读到的内容,以获得运行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的类路径中。
答案 0 :(得分:1)
我发现我的log4j.properties必须位于类路径的根目录中。 由于我的classpath 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>
答案 1 :(得分:0)
对于我添加了:
<path id="properties">
<dirset dir="${config.dir}"/>
</path>
其中$ {config.dir}是log4j.properties所在的/ src / config文件夹的路径。
仍然致力于让eclipse工作,它与eclipse中的类路径不同。
谢谢!