Package org.apache.tools.ant

# Class XmlLogger

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

All Implemented Interfaces:
  `EventListener`, `BuildListener`, `BuildLogger`

public class XmlLogger extends Object implements BuildLogger
Generates a file in the current directory with an XML description of what happened during a build. The default filename is "log.xml", but this can be overridden with the property `XmlLogger.file`. This implementation assumes in its sanity checking that only one thread runs a particular target/task at a time. This is enforced by the way that parallel builds and antcalls are done - and indeed all but the simplest of tasks could run into problems if executed in parallel.

See Also:
  - `Project.addBuildListener(BuildListener)`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `XmlLogger()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `buildFinished(BuildEvent event)`
  Fired when the build finishes, this adds the time taken and any error stacktrace to the build element and writes the document to disk.
  `void`
  `buildStarted(BuildEvent event)`
  Fired when the build starts, this builds the top-level element for the document and remembers the time of the start of the build.
  `int`
  `getMessageOutputLevel()`
  `void`
  `messageLogged(BuildEvent event)`
  Fired when a message is logged, this adds a message element to the most appropriate parent element (task, target or build) and records the priority and text of the message.
  `void`
  `setEmacsMode(boolean emacsMode)`
  Ignore emacs mode, as it has no meaning in XML format
  `void`
  `setErrorPrintStream(PrintStream err)`
  Ignore error print stream.
  `void`
  `setMessageOutputLevel(int level)`
  Set the logging level when using this as a Logger
  `void`
  `setOutputPrintStream(PrintStream output)`
  Set the output stream to which logging output is sent when operating as a logger.
  `void`
  `targetFinished(BuildEvent event)`
  Fired when a target finishes building, this adds the time taken and any error stacktrace to the appropriate target element in the log.
  `void`
  `targetStarted(BuildEvent event)`
  Fired when a target starts building, this pushes a timed element for the target onto the stack of elements for the current thread, remembering the current time and the name of the target.
  `void`
  `taskFinished(BuildEvent event)`
  Fired when a task finishes building, this adds the time taken and any error stacktrace to the appropriate task element in the log.
  `void`
  `taskStarted(BuildEvent event)`
  Fired when a task starts building, this pushes a timed element for the task onto the stack of elements for the current thread, remembering the current time and the name of the task.

  ### Methods inherited from class java.lang.Object

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

- ## Constructor Details

  - ### XmlLogger

    public XmlLogger()

- ## Method Details

  - ### buildStarted

    public void buildStarted(BuildEvent event)
    Fired when the build starts, this builds the top-level element for the document and remembers the time of the start of the build.
    Specified by:
      `buildStarted` in interface `BuildListener`
    Parameters:
      `event` - Ignored.

  - ### buildFinished

    public void buildFinished(BuildEvent event)
    Fired when the build finishes, this adds the time taken and any error stacktrace to the build element and writes the document to disk.
    Specified by:
      `buildFinished` in interface `BuildListener`
    Parameters:
      `event` - An event with any relevant extra information. Will not be `null`.
    See Also:
      - `BuildEvent.getException()`

  - ### targetStarted

    public void targetStarted(BuildEvent event)
    Fired when a target starts building, this pushes a timed element for the target onto the stack of elements for the current thread, remembering the current time and the name of the target.
    Specified by:
      `targetStarted` in interface `BuildListener`
    Parameters:
      `event` - An event with any relevant extra information. Will not be `null`.
    See Also:
      - `BuildEvent.getTarget()`

  - ### targetFinished

    public void targetFinished(BuildEvent event)
    Fired when a target finishes building, this adds the time taken and any error stacktrace to the appropriate target element in the log.
    Specified by:
      `targetFinished` in interface `BuildListener`
    Parameters:
      `event` - An event with any relevant extra information. Will not be `null`.
    See Also:
      - `BuildEvent.getException()`

  - ### taskStarted

    public void taskStarted(BuildEvent event)
    Fired when a task starts building, this pushes a timed element for the task onto the stack of elements for the current thread, remembering the current time and the name of the task.
    Specified by:
      `taskStarted` in interface `BuildListener`
    Parameters:
      `event` - An event with any relevant extra information. Will not be `null`.
    See Also:
      - `BuildEvent.getTask()`

  - ### taskFinished

    public void taskFinished(BuildEvent event)
    Fired when a task finishes building, this adds the time taken and any error stacktrace to the appropriate task element in the log.
    Specified by:
      `taskFinished` in interface `BuildListener`
    Parameters:
      `event` - An event with any relevant extra information. Will not be `null`.
    See Also:
      - `BuildEvent.getException()`

  - ### messageLogged

    public void messageLogged(BuildEvent event)
    Fired when a message is logged, this adds a message element to the most appropriate parent element (task, target or build) and records the priority and text of the message.
    Specified by:
      `messageLogged` in interface `BuildListener`
    Parameters:
      `event` - An event with any relevant extra information. Will not be `null`.
    See Also:
      - `BuildEvent.getMessage()`
      - `BuildEvent.getException()`
      - `BuildEvent.getPriority()`

  - ### setMessageOutputLevel

    public void setMessageOutputLevel(int level)
    Set the logging level when using this as a Logger
    Specified by:
      `setMessageOutputLevel` in interface `BuildLogger`
    Parameters:
      `level` - the logging level - see `Project` class for level definitions

  - ### 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)
    Set the output stream to which logging output is sent when operating as a logger.
    Specified by:
      `setOutputPrintStream` in interface `BuildLogger`
    Parameters:
      `output` - the output PrintStream.

  - ### setEmacsMode

    public void setEmacsMode(boolean emacsMode)
    Ignore emacs mode, as it has no meaning in XML format
    Specified by:
      `setEmacsMode` in interface `BuildLogger`
    Parameters:
      `emacsMode` - true if logger should produce emacs compatible output

  - ### setErrorPrintStream

    public void setErrorPrintStream(PrintStream err)
    Ignore error print stream. All output will be written to either the XML log file or the PrintStream provided to setOutputPrintStream
    Specified by:
      `setErrorPrintStream` in interface `BuildLogger`
    Parameters:
      `err` - the stream we are going to ignore.