org.apache.tools.ant

Class DefaultLogger

Implemented Interfaces:
BuildListener, BuildLogger, EventListener
Known Direct Subclasses:
AnsiColorLogger, MailLogger, NoBannerLogger, TimestampedLogger

public class DefaultLogger
extends java.lang.Object
implements BuildLogger

Writes build events to a PrintStream. Currently, it only writes which targets are being executed, and any messages that get logged.

Field Summary

static int
LEFT_COLUMN_SIZE
Size of left-hand column for right-justified task name.
protected boolean
emacsMode
Whether or not to use emacs-style output
protected PrintStream
err
PrintStream to write error messages to
protected static String
lSep
Line separator
protected int
msgOutputLevel
Lowest level of message to write out
protected PrintStream
out
PrintStream to write non-error messages to

Constructor Summary

DefaultLogger()
Sole constructor.

Method Summary

void
buildFinished(BuildEvent event)
Prints whether the build succeeded or failed, any errors the occurred during the build, and how long the build took.
void
buildStarted(BuildEvent event)
Responds to a build being started by just remembering the current time.
protected static String
formatTime(long millis)
Convenience method to format a specified length of time.
protected String
getBuildFailedMessage()
This is an override point: the message that indicates whether a build failed.
protected String
getBuildSuccessfulMessage()
This is an override point: the message that indicates that a build succeeded.
protected void
log(String message)
Empty implementation which allows subclasses to receive the same output that is generated here.
void
messageLogged(BuildEvent event)
Logs a message, if the priority is suitable.
protected void
printMessage(String message, PrintStream stream, int priority)
Prints a message to a PrintStream.
void
setEmacsMode(boolean emacsMode)
Sets this logger to produce emacs (and other editor) friendly output.
void
setErrorPrintStream(PrintStream err)
Sets the output stream to which this logger is to send error messages.
void
setMessageOutputLevel(int level)
Sets the highest level of message this logger should respond to.
void
setOutputPrintStream(PrintStream output)
Sets the output stream to which this logger is to send its output.
void
targetFinished(BuildEvent event)
No-op implementation.
void
targetStarted(BuildEvent event)
Logs a message to say that the target has started if this logger allows information-level messages.
void
taskFinished(BuildEvent event)
No-op implementation.
void
taskStarted(BuildEvent event)
No-op implementation.

Field Details

LEFT_COLUMN_SIZE

public static final int LEFT_COLUMN_SIZE
Size of left-hand column for right-justified task name.
Field Value:
12

emacsMode

protected boolean emacsMode
Whether or not to use emacs-style output

err

protected PrintStream err
PrintStream to write error messages to

lSep

protected static final String lSep
Line separator

msgOutputLevel

protected int msgOutputLevel
Lowest level of message to write out

out

protected PrintStream out
PrintStream to write non-error messages to

Constructor Details

DefaultLogger

public DefaultLogger()
Sole constructor.

Method Details

buildFinished

public void buildFinished(BuildEvent event)
Prints whether the build succeeded or failed, any errors the occurred during the build, and how long the build took.
Specified by:
buildFinished in interface BuildListener
Parameters:
event - An event with any relevant extra information. Must not be null.

buildStarted

public void buildStarted(BuildEvent event)
Responds to a build being started by just remembering the current time.
Specified by:
buildStarted in interface BuildListener
Parameters:
event - Ignored.

formatTime

protected static String formatTime(long millis)
Convenience method to format a specified length of time.
Parameters:
millis - Length of time to format, in milliseconds.
Returns:
the time as a formatted string.

getBuildFailedMessage

protected String getBuildFailedMessage()
This is an override point: the message that indicates whether a build failed. Subclasses can change/enhance the message.
Returns:
The classic "BUILD FAILED"

getBuildSuccessfulMessage

protected String getBuildSuccessfulMessage()
This is an override point: the message that indicates that a build succeeded. Subclasses can change/enhance the message.
Returns:
The classic "BUILD SUCCESSFUL"

log

protected void log(String message)
Empty implementation which allows subclasses to receive the same output that is generated here.
Parameters:
message - Message being logged. Should not be null.

messageLogged

public void messageLogged(BuildEvent event)
Logs a message, if the priority is suitable. In non-emacs mode, task level messages are prefixed by the task name which is right-justified.
Specified by:
messageLogged in interface BuildListener
Parameters:
event - A BuildEvent containing message information. Must not be null.

printMessage

protected void printMessage(String message,
                            PrintStream stream,
                            int priority)
Prints a message to a PrintStream.
Parameters:
message - The message to print. Should not be null.
stream - A PrintStream to print the message to. Must not be null.
priority - The priority of the message. (Ignored in this implementation.)

setEmacsMode

public void setEmacsMode(boolean emacsMode)
Sets this logger to produce emacs (and other editor) friendly output.
Specified by:
setEmacsMode in interface BuildLogger
Parameters:
emacsMode - true if output is to be unadorned so that emacs and other editors can parse files names, etc.

setErrorPrintStream

public void setErrorPrintStream(PrintStream err)
Sets the output stream to which this logger is to send error messages.
Specified by:
setErrorPrintStream in interface BuildLogger
Parameters:
err - The error stream for the logger. Must not be null.

setMessageOutputLevel

public void setMessageOutputLevel(int level)
Sets the highest level of message this logger should respond to. Only messages with a message level lower than or equal to the given level should be written to the log.

Constants for the message levels are in the Project class. The order of the levels, from least to most verbose, is MSG_ERR, MSG_WARN, MSG_INFO, MSG_VERBOSE, MSG_DEBUG.

The default message level for DefaultLogger is Project.MSG_ERR.

Specified by:
setMessageOutputLevel in interface BuildLogger
Parameters:
level - the logging level for the logger.

setOutputPrintStream

public void setOutputPrintStream(PrintStream output)
Sets the output stream to which this logger is to send its output.
Specified by:
setOutputPrintStream in interface BuildLogger
Parameters:
output - The output stream for the logger. Must not be null.

targetFinished

public void targetFinished(BuildEvent event)
No-op implementation.
Specified by:
targetFinished in interface BuildListener
Parameters:
event - Ignored.

targetStarted

public void targetStarted(BuildEvent event)
Logs a message to say that the target has started if this logger allows information-level messages.
Specified by:
targetStarted in interface BuildListener
Parameters:
event - An event with any relevant extra information. Must not be null.

taskFinished

public void taskFinished(BuildEvent event)
No-op implementation.
Specified by:
taskFinished in interface BuildListener
Parameters:
event - Ignored.

taskStarted

public void taskStarted(BuildEvent event)
No-op implementation.
Specified by:
taskStarted in interface BuildListener
Parameters:
event - Ignored.