[英]Specification of configuration file (log4j2.xml) for log4j as VM argument just working in eclipse
我正在使用新的Log4j2-Java Logging Framework。 如果我在eclipse中將配置文件的路徑指定為VM參數-Dlog4j.configurationFile=/home/../config.xml
一切正常。 配置文件已加載,日志記錄按預期工作,即所有日志均寫入文件。 如果我另外使用-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不在類路徑上。 好!
以下是我用來創建prog.jar的build.xml文件的各個部分:
<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時為什么沒有更多調試消息。
謝謝你的支持。
感謝Vikas Sachdeva的提示,我得以解決此問題。 問題是我顯然將log4j庫中的太多jar文件打包到prog.jar
。 當我僅包含以下jar文件時,它也可以在ANT /控制台中正常使用。
junit-X.jar
log4j-api-X.ja
log4j-core-X.jar
slf4j-api-X.jar
slf4j-simple-X.jar
我遺漏了log4j庫附帶的其他jar。 看來Eclipse忽略了這些,但是當build.xml中包含這些內容最終變成jar時,它們會引起麻煩。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.