Solved

Logging while building with Apache ANT

Posted on 2007-12-04
17
566 Views
Last Modified: 2008-03-06
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

0
Comment
Question by:sandeep1984
  • 7
  • 6
  • 4
17 Comments
 
LVL 26

Expert Comment

by:ksivananth
Comment Utility
use echo!
0
 
LVL 86

Expert Comment

by:CEHJ
Comment Utility
You could make it simple and use

<echo message="Build started" />
0
 
LVL 86

Expert Comment

by:CEHJ
Comment Utility
For very verbose output you can do

ant -d
0
 
LVL 26

Expert Comment

by:ksivananth
Comment Utility
See http://ant.apache.org/manual/index.html for the log4j config!
0
 
LVL 2

Author Comment

by:sandeep1984
Comment Utility
How to display the time?
0
 
LVL 26

Expert Comment

by:ksivananth
Comment Utility
you will have to specify the pattern in log4j config!
0
 
LVL 86

Expert Comment

by:CEHJ
Comment Utility
0
 
LVL 2

Author Comment

by:sandeep1984
Comment Utility
How can I specify the patterns?
any example?
0
Do You Know the 4 Main Threat Actor Types?

Do you know the main threat actor types? Most attackers fall into one of four categories, each with their own favored tactics, techniques, and procedures.

 
LVL 86

Expert Comment

by:CEHJ
Comment Utility
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
 
LVL 26

Expert Comment

by:ksivananth
Comment Utility
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
 
LVL 2

Author Comment

by:sandeep1984
Comment Utility
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
 
LVL 26

Expert Comment

by:ksivananth
Comment Utility
try this,

log4j.appender.LogFile.layout.ConversionPattern=[%t]-[%6r] %8c{1} : %m%n
0
 
LVL 26

Expert Comment

by:ksivananth
Comment Utility
sorry t is to print the name of the thread, try the below rather...
{DATE_TIME};
0
 
LVL 86

Assisted Solution

by:CEHJ
CEHJ earned 200 total points
Comment Utility
The field in the pattern should be something like

%d{dd MMM yyyy HH:mm:ss,SSS}
0
 
LVL 26

Accepted Solution

by:
ksivananth earned 300 total points
Comment Utility
try either of the below,

%d{ISO8601} or %d{ABSOLUTE}.
0
 
LVL 2

Author Comment

by:sandeep1984
Comment Utility
Thanks all.
Its working fine.
0
 
LVL 86

Expert Comment

by:CEHJ
Comment Utility
:-)
0

Featured Post

What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

Join & Write a Comment

Suggested Solutions

For customizing the look of your lightweight component and making it look lucid like it was made of glass. Or: how to make your component more Apple-ish ;) This tip assumes your component to be of rectangular shape and completely opaque. (COD…
Java contains several comparison operators (e.g., <, <=, >, >=, ==, !=) that allow you to compare primitive values. However, these operators cannot be used to compare the contents of objects. Interface Comparable is used to allow objects of a cl…
Viewers will learn one way to get user input in Java. Introduce the Scanner object: Declare the variable that stores the user input: An example prompting the user for input: Methods you need to invoke in order to properly get  user input:
Viewers will learn about the regular for loop in Java and how to use it. Definition: Break the for loop down into 3 parts: Syntax when using for loops: Example using a for loop:

763 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

8 Experts available now in Live!

Get 1:1 Help Now