<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->
<html>
  <head>
    <meta http-equiv="Content-Language" content="en-us"></meta>
    <link rel="stylesheet" type="text/css" href="style.css">
    <title>PlainListener AntUnit Listener</title>
  </head>

  <body>
    <h2><a name="plainlistener">Plain AntUnit Listener</a></h2>

    <h3>Description</h3>

    <p>Writes reports similar to the "plain" JUnit formatter.</p>

    <h3>Parameters</h3>
    <table border="1" cellpadding="2" cellspacing="0">
      <tr>
        <td valign="top"><b>Attribute</b></td>
        <td valign="top"><b>Description</b></td>
        <td align="center" valign="top"><b>Required</b></td>
      </tr>
      <tr>
        <td valign="top">sendLogTo</td>
        <td valign="top">Where the output will be written to.  Valid
            values are "ant" for Ant's logging system, "file" for a
            file and "both" for either of both.  Defaults to "ant".</td>
        <td align="center">No.</td>
      </tr>
      <tr>
        <td valign="top">toDir</td>
        <td valign="top">Directory where testreports will be written
            to if writing to a file.  Defaults to the project's
            basedir.</td>
        <td align="center">No.</td>
      </tr>
      <tr>
        <td valign="top">logLevel</td>
        <td valign="top">Log level for messages from the tests to
        include in the report.  Must be one of: none, error, warn,
        warning, info, verbose, and debug. Messages at the given level
        or below will be included.</td>
        <td align="center">No. Default is 'none'.</td>
      </tr>
    </table>
  </body>
</html>
