[英]Log4j messages lost in Eclipse console when running in Ant
我一直在尝试使用Apache log4j进行日志记录,以便在Ant中运行时可以在Eclipse的控制台中正确显示,并且没有运气。 我有一个有效的log4j.xml配置,该配置具有基本的根记录器,调试优先级和ConsoleAppender。 我已经验证了记录器的工作原理,因为如果我从项目中删除log4j.xml,Ant目标会抱怨它缺少log4j配置。 如果我将附加程序切换为文件附加程序,则所有输出都将正确发送到该文件。 将其切换回控制台,除了标准Ant输出之外,我对Eclipse控制台一无所知。
但是,我的JUnit测试输出log4j消息,但是我相信这是因为我批量运行它们并分叉了那些进程。
如果我在命令行上运行完全相同的Ant脚本而未做任何更改,则会得到log4j输出,该输出期望与Ant输出交错。 我在Mac 10.6 Intel 64计算机上的Eclipse Helios中运行Ant 1.7.1。 我已验证这也是运行Helios的Windows XP计算机上的问题。 我尝试在控制台附加程序配置中将“ follow”设置为true,但这没有帮助。
我可以提供代码片段,但是就像我已经提到的那样,我已经证明log4j的配置正确,并且在类路径上拾取了log4j.xml,并且正在执行和输出日志记录。 这与Ant与Eclipse的集成方式有关-其他人会遇到这种情况吗? 这应该是我提交给Eclipse项目的东西吗?
我有一个类似的问题,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>
希望这对某人有帮助。
通过ant执行的Java任务不会将标准输出和错误发送到主ant的输出。
您是否看过Ant Java任务的output
, error
和i/o redirectors
?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.