DefaultLogger (Apache Ant API)
Description: declaration: package: org.apache.tools.ant, class: DefaultLogger

# Class DefaultLogger

java.lang.Object
org.apache.tools.ant.DefaultLogger

All Implemented Interfaces:
  `EventListener, BuildListener, BuildLogger`

Direct Known Subclasses:
  `AnsiColorLogger, MailLogger, NoBannerLogger, ProfileLogger, SilentLogger, TimestampedLogger`

public class DefaultLogger extends 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

  Fields
  Modifier and Type
  Field
  Description
  `protected boolean`
  `emacsMode`
  Whether or not to use emacs-style output
  `protected PrintStream`
  `err`
  PrintStream to write error messages to
  `static final int`
  `LEFT_COLUMN_SIZE`
  Size of left-hand column for right-justified task name.
  `protected static final String`
  `lSep`
  Deprecated.
  `protected int`
  `msgOutputLevel`
  Lowest level of message to write out
  `protected PrintStream`
  `out`
  PrintStream to write non-error messages to

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `DefaultLogger()`
  Sole constructor.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `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 String`
  `extractProjectName(BuildEvent event)`
  Get the project name or null
  `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.
  `int`
  `getMessageOutputLevel()`
  `protected String`
  `getTimestamp()`
  Get the current time.
  `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.

  ### Methods inherited from class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### LEFT_COLUMN_SIZE

    public static final int LEFT_COLUMN_SIZE
    Size of left-hand column for right-justified task name.
    See Also:
      - `messageLogged(BuildEvent)`
      - Constant Field Values

  - ### out

    protected PrintStream out
    PrintStream to write non-error messages to

  - ### err

    protected PrintStream err
    PrintStream to write error messages to

  - ### msgOutputLevel

    protected int msgOutputLevel
    Lowest level of message to write out

  - ### lSep

    @Deprecated protected static final String lSep
    Deprecated.
    Line separator

  - ### emacsMode

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

- ## Constructor Details

  - ### DefaultLogger

    public DefaultLogger()
    Sole constructor.

- ## Method Details

  - ### 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.

  - ### getMessageOutputLevel

    public int getMessageOutputLevel()
    Specified by:
      `getMessageOutputLevel` in interface `BuildLogger`
    Returns:
      Returns the `currently set` message output level. The `default` implementation of this method returns `MSG_INFO`.

  - ### 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`.

  - ### 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`.

  - ### 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.

  - ### 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.

  - ### 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`.
    See Also:
      - `BuildEvent.getException()`

  - ### 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"

  - ### 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`.
    See Also:
      - `BuildEvent.getTarget()`

  - ### targetFinished

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

  - ### taskStarted

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

  - ### taskFinished

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

  - ### 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`.
    See Also:
      - `BuildEvent.getMessage()`
      - `BuildEvent.getException()`
      - `BuildEvent.getPriority()`

  - ### 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.
    See Also:
      - `DateUtils.formatElapsedTime(long)`

  - ### 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.)

  - ### 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`.

  - ### getTimestamp

    protected String getTimestamp()
    Get the current time.
    Returns:
      the current time as a formatted string.
    Since:
      Ant1.7.1

  - ### extractProjectName

    protected String extractProjectName(BuildEvent event)
    Get the project name or null
    Parameters:
      `event` - the event
    Returns:
      the project that raised this event
    Since:
      Ant1.7.1