|
|
@@ -55,6 +55,8 @@ |
|
|
|
package org.apache.tools.ant; |
|
|
|
|
|
|
|
import java.io.PrintStream; |
|
|
|
import java.io.PrintWriter; |
|
|
|
import java.io.StringWriter; |
|
|
|
|
|
|
|
/** |
|
|
|
* Writes build event to a PrintStream. Currently, it |
|
|
@@ -76,7 +78,7 @@ public class DefaultLogger implements BuildLogger { |
|
|
|
/** |
|
|
|
* Set the msgOutputLevel this logger is to respond to. |
|
|
|
* |
|
|
|
* Only messages with a message level lower than or equal to the given level are |
|
|
|
* Only messages with a message level lower than or equal to the given level are |
|
|
|
* output to the log. |
|
|
|
* <P> |
|
|
|
* Constants for the message levels are in Project.java. The order of |
|
|
@@ -91,7 +93,6 @@ public class DefaultLogger implements BuildLogger { |
|
|
|
this.msgOutputLevel = level; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
* Set the output stream to which this logger is to send its output. |
|
|
|
* |
|
|
@@ -120,7 +121,6 @@ public class DefaultLogger implements BuildLogger { |
|
|
|
this.emacsMode = emacsMode; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public void buildStarted(BuildEvent event) { |
|
|
|
startTime = System.currentTimeMillis(); |
|
|
|
} |
|
|
@@ -131,34 +131,44 @@ public class DefaultLogger implements BuildLogger { |
|
|
|
*/ |
|
|
|
public void buildFinished(BuildEvent event) { |
|
|
|
Throwable error = event.getException(); |
|
|
|
StringBuffer message = new StringBuffer(); |
|
|
|
|
|
|
|
if (error == null) { |
|
|
|
printlnAndFlush(out, lSep + "BUILD SUCCESSFUL"); |
|
|
|
message.append(lSep + "BUILD SUCCESSFUL"); |
|
|
|
} |
|
|
|
else { |
|
|
|
printlnAndFlush(err, lSep + "BUILD FAILED" + lSep); |
|
|
|
message.append(lSep + "BUILD FAILED" + lSep); |
|
|
|
|
|
|
|
if (Project.MSG_VERBOSE <= msgOutputLevel || |
|
|
|
!(error instanceof BuildException)) { |
|
|
|
error.printStackTrace(err); |
|
|
|
err.flush(); |
|
|
|
StringWriter sw = new StringWriter(); |
|
|
|
PrintWriter pw = new PrintWriter(sw); |
|
|
|
error.printStackTrace(pw); |
|
|
|
message.append(sw.toString()); |
|
|
|
} |
|
|
|
else { |
|
|
|
if (error instanceof BuildException) { |
|
|
|
printlnAndFlush(err, error.toString()); |
|
|
|
message.append(error.toString() + lSep); |
|
|
|
} |
|
|
|
else { |
|
|
|
err.println(error.getMessage()); |
|
|
|
message.append(error.getMessage() + lSep); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
printlnAndFlush(out, lSep + "Total time: " + formatTime(System.currentTimeMillis() - startTime)); |
|
|
|
message.append(lSep + "Total time: " |
|
|
|
+ formatTime(System.currentTimeMillis() - startTime)); |
|
|
|
|
|
|
|
String msg = message.toString(); |
|
|
|
printlnAndFlush(error == null ? out : err, msg); |
|
|
|
log(msg); |
|
|
|
} |
|
|
|
|
|
|
|
public void targetStarted(BuildEvent event) { |
|
|
|
if (Project.MSG_INFO <= msgOutputLevel) { |
|
|
|
printlnAndFlush(out, lSep + event.getTarget().getName() + ":"); |
|
|
|
String msg = lSep + event.getTarget().getName() + ":"; |
|
|
|
printlnAndFlush(out, msg); |
|
|
|
log(msg); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@@ -169,27 +179,28 @@ public class DefaultLogger implements BuildLogger { |
|
|
|
public void taskFinished(BuildEvent event) {} |
|
|
|
|
|
|
|
public void messageLogged(BuildEvent event) { |
|
|
|
|
|
|
|
PrintStream logTo = event.getPriority() == Project.MSG_ERR ? err : out; |
|
|
|
|
|
|
|
// Filter out messages based on priority |
|
|
|
if (event.getPriority() <= msgOutputLevel) { |
|
|
|
|
|
|
|
StringBuffer message = new StringBuffer(); |
|
|
|
// Print out the name of the task if we're in one |
|
|
|
if (event.getTask() != null) { |
|
|
|
String name = event.getTask().getTaskName(); |
|
|
|
|
|
|
|
if (!emacsMode) { |
|
|
|
String msg = "[" + name + "] "; |
|
|
|
for (int i = 0; i < (LEFT_COLUMN_SIZE - msg.length()); i++) { |
|
|
|
logTo.print(" "); |
|
|
|
String label = "[" + name + "] "; |
|
|
|
for (int i = 0; i < (LEFT_COLUMN_SIZE - label.length()); i++) { |
|
|
|
message.append(" "); |
|
|
|
} |
|
|
|
logTo.print(msg); |
|
|
|
message.append(label); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// Print the message |
|
|
|
printlnAndFlush(logTo, event.getMessage()); |
|
|
|
message.append(event.getMessage()); |
|
|
|
String msg = message.toString(); |
|
|
|
printlnAndFlush(event.getPriority() != Project.MSG_ERR ? out : err, |
|
|
|
msg); |
|
|
|
log(msg); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@@ -211,10 +222,16 @@ public class DefaultLogger implements BuildLogger { |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Empty implementation which allows subclasses to receive the |
|
|
|
* same output that is generated here. |
|
|
|
*/ |
|
|
|
protected void log(String message) {} |
|
|
|
|
|
|
|
/** |
|
|
|
* Print a line to the given stream and flush the stream right after that. |
|
|
|
*/ |
|
|
|
private void printlnAndFlush(PrintStream p, String line) { |
|
|
|
protected void printlnAndFlush(PrintStream p, String line) { |
|
|
|
p.println(line); |
|
|
|
p.flush(); |
|
|
|
} |
|
|
|