簡體   English   中英

指定log4j的配置文件(log4j2.xml)作為VM參數,僅在eclipse中工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM