Logging while building with Apache ANT

I am using Apache ANT 1.7 for building my projects.

I need logging during build using ant script (logging information like, build started, target started, target ended,build stopped).

Thanks
Sandeep
<project name="Test" default="all" basedir=".">
 
<property name="src.dir" value="${basedir}/src"/>
<property name="dest.dir" value="${basedir}/classes"/>
<property name="jar.dir" value="${basedir}/jar"/>
<property name="lib.dir" value="${basedir}/lib"/>
<property name="jar.name" value="${ant.project.name}.jar"/>
 
<target name="all" depends="clean,comp,mkjar"/>
 
<path id="class.path">
	<fileset dir="${lib.dir}" includes="**/*.jar"/>
	<pathelement location="${dest.dir}"/>
</path>
 
<target name="clean">
 <delete dir="${dest.dir}"/>
 <delete file="${jar.dir}/${jar.name}"/>
 </target>
 
<target name="init" depends="clean">
  <mkdir dir="${dest.dir}"/>
  <mkdir dir="${dest.dir}/res"/>
  <mkdir dir="${jar.dir}"/>
</target>
 
<target name="comp" depends="clean,init">
 <javac srcdir="${src.dir}" destdir="${dest.dir}" debug="on" verbose="false">
    <classpath refid="class.path"/>
  </javac>
  <copy todir="${dest.dir}/res">
    <fileset dir="${basedir}/res"/>
  </copy>
</target>
 
<target name="mkjar" depends="comp">
 
  <jar jarfile="${jar.dir}/${jar.name}" 
       basedir="${dest.dir}">
  <manifest>
   <attribute name="Main-Class" value="${main.class}"/>
   <attribute name="Created-By" value="Sandeep"/>
   <attribute name="Class-Path" value="./lib/commons-httpclient-3.1.jar ./lib/commons-codec-1.3.jar ./lib/commons-logging-1.1.jar" />
  </manifest>
 </jar>
 
</target>
 
</project>

Open in new window

LVL 2
sandeep1984Asked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
ksivananthConnect With a Mentor Commented:
try either of the below,

%d{ISO8601} or %d{ABSOLUTE}.
0
 
ksivananthCommented:
use echo!
0
 
CEHJCommented:
You could make it simple and use

<echo message="Build started" />
0
Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

 
CEHJCommented:
For very verbose output you can do

ant -d
0
 
ksivananthCommented:
See http://ant.apache.org/manual/index.html for the log4j config!
0
 
sandeep1984Author Commented:
How to display the time?
0
 
ksivananthCommented:
you will have to specify the pattern in log4j config!
0
 
sandeep1984Author Commented:
How can I specify the patterns?
any example?
0
 
CEHJCommented:
I've never run Ant with log4j logging, but i'd guess that would be even more verbose than the debug option - probably overkill
0
 
ksivananthCommented:
try this,
log4j.appender.stdout.layout.ConversionPattern=[%t] - %m%n

>>I've never run Ant with log4j logging

Actually, Ant uses log4j for printing messages even in console!
0
 
sandeep1984Author Commented:
Thanks for your efforts
I used log4j and got this output in build.log file

I am running ant as
ant -listener org.apache.tools.ant.listener.Log4jListener -lib .

My pog4j.properties configuration code snippet and the output file is here

How can I specify the time.

log4j.rootLogger=ERROR, LogFile
log4j.logger.org.apache.tools.ant.Project=INFO
log4j.logger.org.apache.tools.ant.Target=INFO
log4j.logger.org.apache.tools.ant.taskdefs=INFO
log4j.logger.org.apache.tools.ant.taskdefs.Echo=WARN
 
log4j.appender.LogFile=org.apache.log4j.FileAppender
log4j.appender.LogFile.layout=org.apache.log4j.PatternLayout
log4j.appender.LogFile.layout.ConversionPattern=[%6r] %8c{1} : %m%n
log4j.appender.LogFile.file=build.log
 
 
Output 
 
[     0]  Project : Build started.
[   422]   Target : Target "clean" started.
[   437]   Delete : Deleting directory C:\Projects\Code\SMSAPI\classes
[   578]   Delete : Deleting: C:\Projects\Code\SMSAPI\jar\SMSAPI.jar
[   578]   Target : Target "clean" finished.
[   578]   Target : Target "init" started.
[   593]    Mkdir : Created dir: C:\Projects\Code\SMSAPI\classes
[   593]    Mkdir : Created dir: C:\Projects\Code\SMSAPI\classes\res
[   593]   Target : Target "init" finished.
[   593]   Target : Target "comp" started.
[   640]    Javac : Compiling 1 source file to C:\Projects\Code\SMSAPI\classes
[  1936]    Javac : Note: C:\Projects\Code\SMSAPI\src\com\geneva\e2c\SendMessage.java uses or overrides a deprecated API.
[  1936]    Javac : Note: Recompile with -Xlint:deprecation for details.
[  1967]     Copy : Copying 1 file to C:\Projects\Code\SMSAPI\classes\res
[  1967]   Target : Target "comp" finished.
[  1967]   Target : Target "mkjar" started.
[  2014]      Jar : Building jar: C:\Projects\Code\SMSAPI\jar\SMSAPI.jar
[  2061]   Target : Target "mkjar" finished.
[  2061]   Target : Target "all" started.
[  2061]   Target : Target "all" finished.
[  2061]  Project : Build finished.

Open in new window

0
 
ksivananthCommented:
try this,

log4j.appender.LogFile.layout.ConversionPattern=[%t]-[%6r] %8c{1} : %m%n
0
 
ksivananthCommented:
sorry t is to print the name of the thread, try the below rather...
{DATE_TIME};
0
 
CEHJConnect With a Mentor Commented:
The field in the pattern should be something like

%d{dd MMM yyyy HH:mm:ss,SSS}
0
 
sandeep1984Author Commented:
Thanks all.
Its working fine.
0
 
CEHJCommented:
:-)
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.