XmlLogger (Apache Ant API)
Date: 2018-09-12

Package org.apache.tools.ant

## Class XmlLogger

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

- All Implemented Interfaces:
    `java.util.EventListener`, `BuildListener`, `BuildLogger`

      public class XmlLogger
      extends java.lang.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

    All Methods Instance Methods Concrete Methods
    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.
    `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​(java.io.PrintStream err)` | Ignore error print stream.
    `void` | `setMessageOutputLevel​(int level)` | Set the logging level when using this as a Logger
    `void` | `setOutputPrintStream​(java.io.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 Detail

    - #### XmlLogger

          public XmlLogger()

  - ### Method Detail

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

    - #### setOutputPrintStream

          public void setOutputPrintStream​(java.io.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​(java.io.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.