Я использую новый Log4j2 - Java Logging Framework. Если в качестве аргумента VM -Dlog4j.configurationFile=/home/../config.xml
я указываю путь к файлу конфигурации в eclipse, все работает нормально. Файл конфигурации загружен, и ведение журнала работает как положено, то есть все журналы записываются в файлы. Если я дополнительно использую -Dlog4j.debug
, я получаю соответствующие отладочные сообщения от платформы, которая подтверждает правильную загрузку моего файла конфигурации.
Однако, когда я использую ANT с файлом build.xml, структура ведения журнала, похоже, инициализируется с конфигурацией по умолчанию - журналы больше не записываются в файлы, а в консоль. Я запускаю созданный файл prog.jar со следующей инструкции из консоли:
java -Dlog4j.configurationFile=/home/../config.xml -Dlog4j.debug -jar prog.jar
Единственное отладочное сообщение, которое я получаю от платформы Log4j2, является следующим:
DEBUG StatusLogger org.slf4j.helpers.Log4jLoggerFactory не находится на пути к классам. Хорошо!
В следующих частях файла build.xml, который я использую для создания prog.jar:
<target name="init">
<tstamp/>
<mkdir dir="${build}"/>
</target>
<path id="master-classpath">
<fileset dir="${lib}/apache-log4j-2.11.1-bin/">
<include name="log4j-api-2.11.1.jar"/>
<include name="log4j-core-2.11.1.jar"/>
</fileset>
</path>
<target name="compile" depends="init" description="compile the source">
<!-- Compile the java code from ${src} into ${build} -->
<javac srcdir="${src}" destdir="${build}" includeantruntime="true">
<classpath refid="master-classpath"/>
</javac>
</target>
<target name="jar" depends="compile" description="generate the distribution">
<mkdir dir="${dist}"/>
<jar jarfile="${dist}/prog.jar" basedir="${build}" compress="true">
<fileset dir="${src}" includes="**/*.java"/>
<zipgroupfileset dir="${lib}/apache-log4j-2.11.1-bin/" includes="*.jar" />
<manifest>
<attribute name="Main-Class" value="ch.zwas.aks.Runner"/>
</manifest>
</jar>
</target>
Я запутался, почему он работает с использованием Eclipse, но, очевидно, не работает, когда я создаю проект с помощью ANT и указываю файл конфигурации в консоли. Кроме того, я понятия не имею, почему больше нет сообщений отладки, когда я запускаю jar из консоли.
Спасибо за вашу поддержку.