ant运行java不能输出log4j日志问题的解决

ant运行java不能输出log4j日志问题的解决
我的程序使用log4j做日志输出。
程序在eclipse下运行,日志输出正常。我的build.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<project name="USSD" basedir="." default="compile">
    <property name="src.dir" value="src"/>
    <property name="build.dir" value="bin"/>
    <property name="lib.dir" value="F:\OPEN-LIB"/>
    <path id="compile.lib">
        <fileset dir="${lib.dir}">
            <include name="ojdbc14.jar"/>           
            <include name="log4j-1.2.12.jar"/>
            <include name="commons-dbcp-1.2.2.jar"/>
            <include name="commons-pool-1.3.jar"/>   
        </fileset>
        <pathelement path="${build.dir}"/>   
    </path>
    <target name="initdir">
       
    </target>
    <target name="compile">
        <javac srcdir="${src.dir}" destdir="${build.dir}">
            <classpath refid="compile.lib"/>
        </javac>
    </target>
    <target name="run" depends="compile">
        <java dir="${build.dir}" classname="com.cybersoftchina.ussd.PushMain">
            <classpath refid="compile.lib"/>
        </java>
    </target>
</project>

我的第一次分析,就觉得可能是,ant系统在运行的时候没有找到配置文件log4j.properties.
所以,我就把src\log4j.properties 复制到 工程的根目录,然后再运行,发现还是不行。

所以,我就想到是src下的配置文件,在编译之后应该复制到了和classes目录下相对应的路径。
所以,我就到bin目录下找,果然没有。
因为我在build.xml文件中,compile的时候,并没有把配置文件log4j.properties复制到其对应目录。
所以,复制src\log4j.properties到bin\log4j.properties。
再运行,OK了。

解决方案:
把src目录的所有配置文件(此处是log4j.properties配置文件)复制到classes目录的对应目录。

修改build.xml如下:
<?xml version="1.0" encoding="UTF-8"?>
<project name="USSD" basedir="." default="compile">
    <property name="src.dir" value="src"/>
    <property name="build.dir" value="bin"/>
    <property name="lib.dir" value="F:\OPEN-LIB"/>
    <path id="compile.lib">
        <fileset dir="${lib.dir}">
            <include name="ojdbc14.jar"/>           
            <include name="log4j-1.2.12.jar"/>
            <include name="commons-dbcp-1.2.2.jar"/>
            <include name="commons-pool-1.3.jar"/>   
        </fileset>
        <pathelement path="${build.dir}"/>   
    </path>
    <target name="initdir">
       
    </target>
    <target name="compile">
        <javac srcdir="${src.dir}" destdir="${build.dir}">
            <classpath refid="compile.lib"/>
        </javac>
    </target>
    <target name="run" depends="compile">
        <java dir="${build.dir}" classname="com.cybersoftchina.ussd.PushMain">
            <classpath refid="compile.lib"/>
        </java>
    </target>
</project>
<?xml version="1.0" encoding="UTF-8"?>
<project name="USSD" basedir="." default="compile">
    <property name="src.dir" value="src"/>
    <property name="build.dir" value="bin"/>
    <property name="lib.dir" value="F:\OPEN-LIB"/>
    <path id="compile.lib">
        <fileset dir="${lib.dir}">
            <include name="ojdbc14.jar"/>           
            <include name="log4j-1.2.12.jar"/>
            <include name="commons-dbcp-1.2.2.jar"/>
            <include name="commons-pool-1.3.jar"/>   
        </fileset>
        <pathelement path="${build.dir}"/>   
    </path>
    <target name="initdir">
       
    </target>
    <target name="compile">
        <javac srcdir="${src.dir}" destdir="${build.dir}">
            <classpath refid="compile.lib"/>
        </javac>
        <copy todir="${build.dir}">
            <fileset dir="${src.dir}">
                <include name="**/*.properties"/>   
                <include name="**/*.xml"/>
            </fileset>
        </copy>

    </target>
    <target name="run" depends="compile">
        <java dir="${build.dir}" classname="com.cybersoftchina.ussd.PushMain">
            <classpath refid="compile.lib"/>
        </java>
    </target>
</project>

上面的深蓝色的部分是新添加的部分。这样,在编译的时候就把所有的配置文件也一同复制到了class文件夹下面了。

再ant run ,就在文件中有日志了。









|----------------------------------------------------------------------------------------|
                           版权声明  版权所有 @zhyiwww
            引用请注明来源 http://www.blogjava.net/zhyiwww   
|----------------------------------------------------------------------------------------|

你可能感兴趣的:(ant运行java不能输出log4j日志问题的解决)