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
|----------------------------------------------------------------------------------------|