You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by st...@apache.org on 2005/08/16 17:33:17 UTC
cvs commit: ant WHATSNEW
stevel 2005/08/16 08:33:17
Modified: docs/manual listeners.html
src/main/org/apache/tools/ant/listener
CommonsLoggingListener.java Log4jListener.java
src/main/org/apache/tools/ant DefaultLogger.java
. WHATSNEW
Added: src/main/org/apache/tools/ant/listener
TimestampedLogger.java
Log:
Because I got fed up of trying to remember when I last ran a build from a particular command line. Did some constant extraction on the commons/log4j listener while I was in the directory.
Revision Changes Path
1.19 +22 -2 ant/docs/manual/listeners.html
Index: listeners.html
===================================================================
RCS file: /home/cvs/ant/docs/manual/listeners.html,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- listeners.html 2 May 2005 15:30:17 -0000 1.18
+++ listeners.html 16 Aug 2005 15:33:16 -0000 1.19
@@ -83,6 +83,12 @@
<td width="33%">Writes the build information to an XML file.</td>
<td width="34%">BuildLogger</td>
</tr>
+ <tr>
+ <td width="33%"><code><a href="#TimestampedLogger">org.apache.tools.ant.TimestampedLogger</a></code></td>
+ <td width="33%">Prints the time that a build finished</td>
+ <td width="34%">BuildLogger</td>
+ </tr>
+
</table>
<h3><a name="DefaultLogger">DefaultLogger</a></h3>
@@ -313,19 +319,33 @@
this can be a relative or absolute file path, or an http URL.
If you set the property to the empty string, "", no XSLT transform
is declared at all.
+</p>
+
+<blockquote>
+
+<p><code>ant -listener org.apache.tools.ant.XmlLogger</code><br>
+<code>ant -logger org.apache.tools.ant.XmlLogger -verbose -logfile build_log.xml</code></p>
+</blockquote>
+<h3><a name="TimestampedLogger">TimestampedLogger</a></h3>
+<p>
+ Acts like the default logger, except that the final success/failure message also includes
+ the time that the build completed. For example:
</p>
+<pre>
+ BUILD SUCCESSFUL - at 16/08/05 16:24
+</pre>
<blockquote>
-<p><code>ant -listener org.apache.tools.ant.XmlLogger</code><br>
-<code>ant -logger org.apache.tools.ant.XmlLogger -verbose -logfile build_log.xml</code></p>
+<code>ant -logger org.apache.tools.ant.listener.TimestampedLogger</code>
</blockquote>
+
<h2><a name="dev">Writing your own</a></h2>
<p>See the <a href="develop.html#buildevents">Build Events</a> section for
1.14 +15 -6 ant/src/main/org/apache/tools/ant/listener/CommonsLoggingListener.java
Index: CommonsLoggingListener.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/listener/CommonsLoggingListener.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- CommonsLoggingListener.java 11 Mar 2005 11:15:27 -0000 1.13
+++ CommonsLoggingListener.java 16 Aug 2005 15:33:16 -0000 1.14
@@ -58,6 +58,15 @@
private LogFactory logFactory;
/**
+ * name of the category under which target events are logged
+ */
+ public static final String TARGET_LOG = "org.apache.tools.ant.Target";
+ /**
+ * name of the category under which project events are logged
+ */
+ public static final String PROJECT_LOG = "org.apache.tools.ant.Project";
+
+ /**
* Construct the listener and make sure that a LogFactory
* can be obtained.
*/
@@ -95,7 +104,7 @@
* @see BuildListener#buildStarted
*/
public void buildStarted(BuildEvent event) {
- String categoryString = "org.apache.tools.ant.Project";
+ String categoryString = PROJECT_LOG;
Log log = getLog(categoryString, null);
if (initialized) {
@@ -108,7 +117,7 @@
*/
public void buildFinished(BuildEvent event) {
if (initialized) {
- String categoryString = "org.apache.tools.ant.Project";
+ String categoryString = PROJECT_LOG;
Log log = getLog(categoryString, event.getProject().getName());
if (event.getException() == null) {
@@ -125,7 +134,7 @@
*/
public void targetStarted(BuildEvent event) {
if (initialized) {
- Log log = getLog("org.apache.tools.ant.Target",
+ Log log = getLog(TARGET_LOG,
event.getTarget().getName());
// Since task log category includes target, we don't really
// need this message
@@ -140,7 +149,7 @@
public void targetFinished(BuildEvent event) {
if (initialized) {
String targetName = event.getTarget().getName();
- Log log = getLog("org.apache.tools.ant.Target",
+ Log log = getLog(TARGET_LOG,
event.getTarget().getName());
if (event.getException() == null) {
realLog(log, "Target end: " + targetName, Project.MSG_DEBUG, null);
@@ -214,10 +223,10 @@
categoryObject = event.getTarget();
if (categoryObject == null) {
categoryObject = event.getProject();
- categoryString = "org.apache.tools.ant.Project";
+ categoryString = PROJECT_LOG;
categoryDetail = event.getProject().getName();
} else {
- categoryString = "org.apache.tools.ant.Target";
+ categoryString = TARGET_LOG;
categoryDetail = event.getTarget().getName();
}
} else {
1.18 +6 -1 ant/src/main/org/apache/tools/ant/listener/Log4jListener.java
Index: Log4jListener.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/listener/Log4jListener.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- Log4jListener.java 29 Oct 2004 08:54:33 -0000 1.17
+++ Log4jListener.java 16 Aug 2005 15:33:16 -0000 1.18
@@ -36,11 +36,16 @@
private boolean initialized = false;
/**
+ * log category we log into
+ */
+ public static final String LOG_ANT = "org.apache.tools.ant";
+
+ /**
* Construct the listener and make sure there is a valid appender.
*/
public Log4jListener() {
initialized = false;
- Logger log = Logger.getLogger("org.apache.tools.ant");
+ Logger log = Logger.getLogger(LOG_ANT);
Logger rootLog = Logger.getRootLogger();
if (!(rootLog.getAllAppenders() instanceof NullEnumeration)) {
initialized = true;
1.1 ant/src/main/org/apache/tools/ant/listener/TimestampedLogger.java
Index: TimestampedLogger.java
===================================================================
package org.apache.tools.ant.listener;
import org.apache.tools.ant.DefaultLogger;
import java.util.Date;
import java.text.DateFormat;
/**
* Like a normal logger, except with timed outputs
*/
public class TimestampedLogger extends DefaultLogger {
/**
* what appears between the old message and the new
*/
private static final String SPACER = " - at ";
/**
* This is an override point: the message that indicates whether a build failed.
* Subclasses can change/enhance the message.
*
* @return The classic "BUILD FAILED"
*/
protected String getBuildFailedMessage() {
return super.getBuildFailedMessage() + SPACER + getTimestamp();
}
/**
* This is an override point: the message that indicates that a build succeeded.
* Subclasses can change/enhance the message.
*
* @return The classic "BUILD SUCCESSFUL"
*/
protected String getBuildSuccessfulMessage() {
return super.getBuildSuccessfulMessage()+SPACER +getTimestamp();
}
protected String getTimestamp() {
Date date = new Date(System.currentTimeMillis());
DateFormat formatter = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
String finishTime = formatter.format(date);
return finishTime;
}
}
1.49 +22 -8 ant/src/main/org/apache/tools/ant/DefaultLogger.java
Index: DefaultLogger.java
===================================================================
RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/DefaultLogger.java,v
retrieving revision 1.48
retrieving revision 1.49
diff -u -r1.48 -r1.49
--- DefaultLogger.java 9 Mar 2004 16:47:59 -0000 1.48
+++ DefaultLogger.java 16 Aug 2005 15:33:16 -0000 1.49
@@ -21,6 +21,7 @@
import java.io.IOException;
import java.io.PrintStream;
import java.io.StringReader;
+
import org.apache.tools.ant.util.DateUtils;
import org.apache.tools.ant.util.StringUtils;
@@ -131,24 +132,19 @@
public void buildFinished(BuildEvent event) {
Throwable error = event.getException();
StringBuffer message = new StringBuffer();
-
if (error == null) {
message.append(StringUtils.LINE_SEP);
- message.append("BUILD SUCCESSFUL");
+ message.append(getBuildSuccessfulMessage());
} else {
message.append(StringUtils.LINE_SEP);
- message.append("BUILD FAILED");
+ message.append(getBuildFailedMessage());
message.append(StringUtils.LINE_SEP);
if (Project.MSG_VERBOSE <= msgOutputLevel
|| !(error instanceof BuildException)) {
message.append(StringUtils.getStackTrace(error));
} else {
- if (error instanceof BuildException) {
- message.append(error.toString()).append(lSep);
- } else {
- message.append(error.getMessage()).append(lSep);
- }
+ message.append(error.toString()).append(lSep);
}
}
message.append(StringUtils.LINE_SEP);
@@ -165,6 +161,24 @@
}
/**
+ * This is an override point: the message that indicates whether a build failed.
+ * Subclasses can change/enhance the message.
+ * @return The classic "BUILD FAILED"
+ */
+ protected String getBuildFailedMessage() {
+ return "BUILD FAILED";
+ }
+
+ /**
+ * This is an override point: the message that indicates that a build succeeded.
+ * Subclasses can change/enhance the message.
+ * @return The classic "BUILD SUCCESSFUL"
+ */
+ protected String getBuildSuccessfulMessage() {
+ return "BUILD SUCCESSFUL";
+ }
+
+ /**
* Logs a message to say that the target has started if this
* logger allows information-level messages.
*
1.848 +3 -0 ant/WHATSNEW
Index: WHATSNEW
===================================================================
RCS file: /home/cvs/ant/WHATSNEW,v
retrieving revision 1.847
retrieving revision 1.848
diff -u -r1.847 -r1.848
--- WHATSNEW 22 Jul 2005 15:54:16 -0000 1.847
+++ WHATSNEW 16 Aug 2005 15:33:16 -0000 1.848
@@ -256,6 +256,9 @@
* <javadoc> now supports -breakiterator for custom doclets if Ant is
running on JSE 5.0 or higher. Bugzilla Report: 34580.
+* New logger, TimestampedLogger, that prints the wall time that a build finished/failed
+ Use with -logger org.apache.tools.ant.listener.TimestampedLogger
+
Changes from Ant 1.6.4 to Ant 1.6.5
===================================
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org
Re: cvs commit: ant WHATSNEW
Posted by Steve Loughran <st...@apache.org>.
stevel@apache.org wrote:
> stevel 2005/08/16 08:33:17
>
> Modified: docs/manual listeners.html
> src/main/org/apache/tools/ant/listener
> CommonsLoggingListener.java Log4jListener.java
> src/main/org/apache/tools/ant DefaultLogger.java
> . WHATSNEW
> Added: src/main/org/apache/tools/ant/listener
> TimestampedLogger.java
> Log:
> Because I got fed up of trying to remember when I last ran a build from a particular command line. Did some constant extraction on the commons/log4j listener while I was in the directory.
>
This is very useful BTW; lets you verify whether your junit results view
is in sync with your last test run, etc, etc.
BUILD FAILED - at 16/08/05 20:36
I'd have made it default were I not scared of breaking things. Including
lots of documentation.
> if (Project.MSG_VERBOSE <= msgOutputLevel
> || !(error instanceof BuildException)) {
> message.append(StringUtils.getStackTrace(error));
> } else {
> - if (error instanceof BuildException) {
> - message.append(error.toString()).append(lSep);
> - } else {
> - message.append(error.getMessage()).append(lSep);
> - }
> + message.append(error.toString()).append(lSep);
> }
intellij says the second instanceof test was spurious, BTW
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org