在Ant中运行时,Eclipse控制台中的Log4j消息丢失

时间:2011-01-07 17:11:54

标签: eclipse ant log4j

我一直在尝试使用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项目的吗?

2 个答案:

答案 0 :(得分:0)

通过ant执行的Java任务不会将标准输出和错误发送到主蚂蚁的输出。

您是否查看了Ant Java taskoutputerrori/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>  

希望这有助于某人。