错误StatusLogger找不到log4j2配置文件。使用ANT目标进行编译时使用默认配置

时间:2017-01-31 12:48:45

标签: java ant log4j log4j2

我收到错误'ERROR StatusLogger找不到log4j2配置文件。使用默认配置:仅将错误记录到控制台。执行 ant target:instrument

我的ANT目标:

<target name="instrumentHibernate">
      <taskdef name="instrument" classname="org.hibernate.tool.instrument.javassist.InstrumentTask">
           <classpath>
                 <path refid="all_classpath"/>
           </classpath>              
     </taskdef>
     <instrument verbose="true">   
        //Error is thrown at this block 
         <fileset dir="target/classes" includes="**/A.class" />
         <fileset dir="target/classes" includes="**/B.class" />
         <fileset dir="target/classes" includes="**/C.class" />          
      </instrument>
</target>

我的项目配置:

ANT:1.7

struts:2.3.24

春天:4.2.3

冬眠:4.2.8

我尝试过以下解决方案:

1)将属性-Dlog4j.configuration更改为-Dlog4j.configurationFile

2)将log4j2.xml文件放在src文件夹

3)在构建脚本中添加sysproperty

4)将classpath设置为log4j2.xml

问题:

1)如果log4j2.xml中的错误会导致此错误,或者只是因为编译时log4j2.xml不可用?

2)是否有可用于验证我的log4j2.xml的工具?

3)是否有任何与ANT相关的依赖或ANT升级?

由于

3 个答案:

答案 0 :(得分:0)

我有一个带有Ant和log4j的项目,我的目标是调用已定义的macri  macrodef我称之为log4j

<java classname="YourMainClass.java or otherclass.java">
    <sysproperty key="log4j.configuration" value="log4j.properties" />
<java/>

内部。我没有log4j2.xml

答案 1 :(得分:0)

1)当log4j 2找不到log4j2.xml文件时发生此错误。我使用jvmarg元素来设置属性Dlog4j.configurationFile:

<java classname="xxx"> <jvmarg value="-Dlog4j.configurationFile=log4j_build.xml"/> </java>

使用ANT的元素路径和元素定义log4j2.xml文件的路径。

2)不,没有任何工具或XSD来验证log4j2.xml文件。要调试配置文件,可以使用属性-Dorg.apache.logging.log4j.simplelog.StatusLogger.level = TRACE打印log4j 2的内部跟踪,并在配置文件中使用属性status:<Configuration status="trace">

3)我使用最新版本的ANT,但我没有任何其他依赖项。

答案 2 :(得分:0)

您可以尝试将文件log4j2.xml复制到用户的工作目录,即:

<copy todir="${user.dir}" overwrite="true" verbose="true">
    <fileset dir="${srcFolder}">
        <include name="**/*.*" />
    </fileset>
</copy>

您需要在srcFolder中包含该文件才能加入。