Сообщения Log4j теряются в консоли Eclipse при работе в Ant - PullRequest
2 голосов
/ 07 января 2011

Я пытался заставить логирование с Apache log4j правильно отображаться в консоли Eclipse при работе в Ant, и мне не повезло.У меня есть рабочая конфигурация log4j.xml, в которой есть основной корневой логгер с приоритетом отладки и ConsoleAppender.Я проверил, что регистратор работает, потому что, если я удаляю log4j.xml из проекта, цель Ant жалуется, что ему не хватает конфигурации log4j.Если я переключаю appender на file appender, весь вывод корректно переходит в файл.Переключив его обратно на консоль, я не получаю ничего от консоли Eclipse, кроме стандартного вывода Ant.

Мои тесты JUnit, однако, выводят сообщения log4j, но я полагаю, что это потому, что я запускаю их в пакетном режиме и выполняю эти процессы.разветвленный.

Если я запускаю точно такой же скрипт Ant в командной строке без изменений, я получаю вывод log4j, который, как я ожидаю, чередуется с выводом Ant. Я использую Ant 1.7.1в Eclipse Helios на моем Mac 10.6 Intel 64 машина.Я подтвердил, что это также проблема на компьютере с Windows XP под управлением Helios.Я попытался установить "follow" в true в конфигурации моего консольного приложения, но это не помогло.

Я могу предоставить фрагменты кода, но, как я уже упоминал, я доказал, что log4j настроен правильно иlog4j.xml выбирается в пути к классам, а ведение журнала выполняется и выводится.Это как-то связано с тем, как Ant интегрируется с Eclipse - кто-нибудь еще испытывает это?Должно ли это быть чем-то, что я представляю проекту Eclipse?

Ответы [ 2 ]

0 голосов
/ 13 марта 2013

У меня была похожая проблема, 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>  

Надеюсь, это кому-нибудь поможет.

0 голосов
/ 03 июля 2011

Java-задачи, выполняемые с помощью ant, не отправляют туда стандартный вывод и ошибку на основной вывод ant.

Вы смотрели на output, error и i/o redirectors Задача Ant Java ?

...