我一直在尝试使用Apache log4j进行日志记录,以便在Ant运行时在Eclipse的控制台中正确显示并且没有运气。我有一个工作的log4j.xml配置,它有一个基本的根记录器,具有调试优先级和ConsoleAppender。我已经验证了记录器的工作原理,因为如果从项目中删除log4j.xml,Ant目标会抱怨它缺少log4j配置。如果我将appender切换到文件追加器,所有输出都正确地转到文件。将它切换回控制台,除了标准的Ant输出之外,我什么也得不到Eclipse控制台。
然而,我的JUnit测试输出了log4j消息,但我认为这是因为我批量运行它们并将这些进程分叉。
如果我在命令行上运行完全相同的Ant脚本而没有任何更改,我得到log4j输出,我希望与Ant输出交错。我在Eclipse Helios上运行Ant 1.7.1我的Mac 10.6 Intel 64机器。我已经验证这也是运行Helios的Windows XP计算机上的一个问题。我已经尝试在我的控制台appender配置中将“follow”设置为true,这没有帮助。
我可以提供代码片段,但正如我已经提到的,我已经证明log4j已正确配置并且正在类路径上拾取log4j.xml并正在执行和输出日志记录。它与Ant如何与Eclipse集成有关 - 其他人都经历过这种情况吗?这应该是我提交给Eclipse项目的吗?
答案 0 :(得分:0)
通过ant执行的Java任务不会将标准输出和错误发送到主蚂蚁的输出。
您是否查看了Ant Java task的output
,error
和i/o redirectors
?
答案 1 :(得分:0)
我有类似的问题,Eclipse没有记录junit消息或log4j。要获取junit日志消息,添加格式化程序会产生差异。只有在测试用例完成后,这似乎才会传递log4j消息。
<target name="junit" depends="copy_cfg">
<junit printsummary="on" fork="false" haltonfailure="no">
<classpath refid="MyProject.classpath" />
<formatter type="xml" />
<formatter type="plain" usefile="false" /> <!-- to screen -->
<batchtest todir="${test.report.dir}">
<fileset dir="${src.dir}">
<include name="**/*Test.java" />
</fileset>
</batchtest>
</junit>
</target>
log4j的问题是因为我在构建目录中没有配置文件,所以在ANT构建过程之后我将它复制到构建路径
<!-- copy the config files for junit -->
<target name="copy_cfg" depends="compile">
<copy file="log4j.xml" todir="${build.dir}" flatten="true"/>
<copy file="config.txt" todir="${build.dir}" flatten="true"/>
</target>
希望这有助于某人。