diff options
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/manual/listeners.html')
-rw-r--r-- | framework/src/ant/apache-ant-1.9.6/manual/listeners.html | 623 |
1 files changed, 0 insertions, 623 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/manual/listeners.html b/framework/src/ant/apache-ant-1.9.6/manual/listeners.html deleted file mode 100644 index 2015cd52..00000000 --- a/framework/src/ant/apache-ant-1.9.6/manual/listeners.html +++ /dev/null @@ -1,623 +0,0 @@ -<!-- - 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"> -<link rel="stylesheet" type="text/css" href="stylesheets/style.css"> -<title>Listeners & Loggers</title> -</head> - -<body> -<h1>Listeners & Loggers</h1> - -<h2><a name="Overview">Overview</a></h2> - -<p>Apache Ant has two related features to allow the build process to be monitored: -listeners and loggers.</p> - -<h3><a name="Listeners">Listeners</a></h3> - -<p>A listener is alerted of the following events:</p> - -<ul> - <li>build started</li> - <li>build finished</li> - <li>target started</li> - <li>target finished</li> - <li>task started</li> - <li>task finished</li> - <li>message logged</li> -</ul> - -<p> - These are used internally for various recording and housekeeping operations, - however new listeners may registered on the command line through the <code>-listener</code> - argument. -</p> - -<h3><a name="Loggers">Loggers</a></h3> - -<p>Loggers extend the capabilities of listeners and add the following features:</p> - -<ul> - <li>Receives a handle to the standard output and error print streams and - therefore can log information to the console or the <code>-logfile</code> specified file.</li> - <li>Logging level (-quiet, -verbose, -debug) aware</li> - <li>Emacs-mode aware</li> -</ul> - -<h2><a name="builtin">Built-in Listeners/Loggers</a></h2> - -<table border="1" cellspacing="1" width="100%" id="AutoNumber1"> - <tr> - <td width="33%">Classname</td> - <td width="33%">Description</td> - <td width="34%">Type</td> - </tr> - <tr> - <td width="33%"><code><a href="#DefaultLogger">org.apache.tools.ant.DefaultLogger</a></code></td> - <td width="33%">The logger used implicitly unless overridden with the - <code>-logger</code> command-line switch.</td> - <td width="34%">BuildLogger</td> - </tr> - <tr> - <td width="33%"><code><a href="#NoBannerLogger"> - org.apache.tools.ant.NoBannerLogger</a></code></td> - <td width="33%">This logger omits output of empty target output.</td> - <td width="34%">BuildLogger</td> - </tr> - <tr> - <td width="33%"><code><a href="#MailLogger"> - org.apache.tools.ant.listener.MailLogger</a></code></td> - <td width="33%">Extends DefaultLogger such that output is still generated - the same, and when the build is finished an e-mail can be sent.</td> - <td width="34%">BuildLogger</td> - </tr> - <tr> - <td width="33%"><code><a href="#AnsiColorLogger"> - org.apache.tools.ant.listener.AnsiColorLogger</a></code></td> - <td width="33%">Colorifies the build output.</td> - <td width="34%">BuildLogger</td> - </tr> - <tr> - <td width="33%"><code><a href="#Log4jListener"> - org.apache.tools.ant.listener.Log4jListener</a></code></td> - <td width="33%">Passes events to Log4j for highly customizable logging.</td> - <td width="34%">BuildListener</td> - </tr> - <tr> - <td width="33%"><code><a href="#XmlLogger">org.apache.tools.ant.XmlLogger</a></code></td> - <td width="33%">Writes the build information to an XML file.</td> - <td width="34%">BuildLogger</td> - </tr> - <tr> - <td width="33%"><code><a href="#TimestampedLogger">org.apache.tools.ant.TimestampedLogger</a></code></td> - <td width="33%">Prints the time that a build finished</td> - <td width="34%">BuildLogger</td> - </tr> - <tr> - <td width="33%"><code><a href="#BigProjectLogger">org.apache.tools.ant.listener.BigProjectLogger</a></code></td> - <td width="33%">Prints the project name every target</td> - <td width="34%">BuildLogger</td> - </tr> - <tr> - <td width="33%"><code><a href="#SimpleBigProjectLogger">org.apache.tools.ant.listener.SimpleBigProjectLogger</a></code></td> - <td width="33%">Prints the project name for subprojects only, otherwise like NoBannerLogger <em>Since Ant 1.8.1</em></td> - <td width="34%">BuildLogger</td> - </tr> - <tr> - <td width="33%"><code><a href="#ProfileLogger">org.apache.tools.ant.listener.ProfileLogger</a></code></td> - <td width="33%">The default logger, with start times, end times and - durations added for each task and target.</td> - <td width="34%">BuildLogger</td> - </tr> -</table> - - - -<h3><a name="DefaultLogger">DefaultLogger</a></h3> -<p>Simply run Ant normally, or:</p> -<blockquote> -<p><code>ant -logger org.apache.tools.ant.DefaultLogger</code></p> -</blockquote> - - - -<h3><a name="NoBannerLogger">NoBannerLogger</a></h3> -<p>Removes output of empty target output.</p> -<blockquote> -<p><code>ant -logger org.apache.tools.ant.NoBannerLogger</code></p> -</blockquote> - - - -<h3><a name="MailLogger">MailLogger</a></h3> -<p>The MailLogger captures all output logged through DefaultLogger (standard Ant -output) and will send success and failure messages to unique e-mail lists, with -control for turning off success or failure messages individually.</p> - -<p>Properties controlling the operation of MailLogger:</p> -<table border="1" cellspacing="1" width="100%" id="AutoNumber2"> - <tr> - <th width="337">Property</th> - <th width="63%">Description</th> - <th width="63%">Required</th> - </tr> - <tr> - <td width="337">MailLogger.mailhost </td> - <td width="63%">Mail server to use</td> - <td width="63%">No, default "localhost"</td> - </tr> - <tr> - <td width="337">MailLogger.port </td> - <td width="63%">SMTP Port for the Mail server</td> - <td width="63%">No, default "25"</td> - </tr> - <tr> - <td width="337">MailLogger.user</td> - <td width="63%">user name for SMTP auth</td> - <td width="63%">Yes, if SMTP auth is required on your SMTP server<br> - the email message will be then sent using Mime and requires JavaMail</td> - </tr> - <tr> - <td width="337">MailLogger.password</td> - <td width="63%">password for SMTP auth</td> - <td width="63%">Yes, if SMTP auth is required on your SMTP server<br> - the email message will be then sent using Mime and requires JavaMail</td> - </tr> - <tr> - <td width="337">MailLogger.ssl</td> - <td width="63%">on or true if ssl is needed<br> - This feature requires JavaMail</td> - <td width="63%"> - no</td> - </tr> - <tr> - <td width="337">MailLogger.from</td> - <td width="63%">Mail "from" address</td> - <td width="63%">Yes, if mail needs to be sent</td> - </tr> - <tr> - <td width="337">MailLogger.replyto</td> - <td width="63%">Mail "replyto" address(es), comma-separated</td> - <td width="63%">No</td> - </tr> - <tr> - <td width="337">MailLogger.failure.notify </td> - <td width="63%">Send build failure e-mails?</td> - <td width="63%">No, default "true"</td> - </tr> - <tr> - <td width="337">MailLogger.success.notify </td> - <td width="63%">Send build success e-mails?</td> - <td width="63%">No, default "true"</td> - </tr> - <tr> - <td width="337">MailLogger.failure.to </td> - <td width="63%">Address(es) to send failure messages to, comma-separated</td> - <td width="63%">Yes, if failure mail is to be sent</td> - </tr> - <tr> - <td width="337">MailLogger.success.to </td> - <td width="63%">Address(es) to send success messages to, comma-separated</td> - <td width="63%">Yes, if success mail is to be sent</td> - </tr> - <tr> - <td width="337">MailLogger.failure.cc </td> - <td width="63%">Address(es) to send failure messages to carbon copy (cc), comma-separated</td> - <td width="63%">No</td> - </tr> - <tr> - <td width="337">MailLogger.success.cc </td> - <td width="63%">Address(es) to send success messages to carbon copy (cc), comma-separated</td> - <td width="63%">No</td> - </tr> - <tr> - <td width="337">MailLogger.failure.bcc </td> - <td width="63%">Address(es) to send failure messages to blind carbon copy (bcc), comma-separated</td> - <td width="63%">No</td> - </tr> - <tr> - <td width="337">MailLogger.success.bcc </td> - <td width="63%">Address(es) to send success messages to blind carbon copy (bcc), comma-separated</td> - <td width="63%">No</td> - </tr> - <tr> - <td width="337">MailLogger.failure.subject </td> - <td width="63%">Subject of failed build</td> - <td width="63%">No, default "Build Failure"</td> - </tr> - <tr> - <td width="337">MailLogger.success.subject </td> - <td width="63%">Subject of successful build</td> - <td width="63%">No, default "Build Success"</td> - </tr> - <tr> - <td width="337">MailLogger.failure.body</td> - <td width="63%">Fixed body of the email for a failed - build. <em>Since Ant 1.8.0</em></td> - <td width="63%">No, default is to send the full log output.</td> - </tr> - <tr> - <td width="337">MailLogger.success.body</td> - <td width="63%">Fixed body of the email for a successful - build. <em>Since Ant 1.8.0</em></td> - <td width="63%">No, default is to send the full log output.</td> - </tr> - <tr> - <td width="337">MailLogger.mimeType</td> - <td width="63%">MIME-Type of the message. <em>Since Ant 1.8.0</em></td> - <td width="63%">No, default is text/plain</td> - </tr> - <tr> - <td width="337">MailLogger.charset</td> - <td width="63%">Character set of the message. <em>Since Ant 1.8.0</em></td> - <td width="63%">No</td> - </tr> - <tr> - <td width="337">MailLogger.starttls.enable</td> - <td width="63%">on or true if STARTTLS should be supported - (requires JavaMail). <em>Since Ant 1.8.0</em></td> - <td width="63%">No, default is false</td> - </tr> - <tr> - <td width="337">MailLogger.properties.file </td> - <td width="63%">Filename of properties file that will override other values.</td> - <td width="63%">No</td> - </tr> -</table> - -<blockquote> -<p><code>ant -logger org.apache.tools.ant.listener.MailLogger</code></p> -</blockquote> - - - -<h3><a name="AnsiColorLogger">AnsiColorLogger</a></h3> - -<p>The AnsiColorLogger adds color to the standard Ant output -by prefixing and suffixing ANSI color code escape sequences to -it. It is just an extension of <a href="#DefaultLogger">DefaultLogger</a> -and hence provides all features that DefaultLogger does.</p> -<p>AnsiColorLogger differentiates the output by assigning -different colors depending upon the type of the message.</p> -<p>If used with the -logfile option, the output file -will contain all the necessary escape codes to -display the text in colorized mode when displayed -in the console using applications like cat, more, etc.</p> -<p>This is designed to work on terminals that support ANSI -color codes. It works on XTerm, ETerm, Win9x Console -(with ANSI.SYS loaded.), etc.</p> -<p><Strong>NOTE:</Strong> -It doesn't work on WinNT and successors, even when a COMMAND.COM console loaded with -ANSI.SYS is used.</p> -<p>If the user wishes to override the default colors -with custom ones, a file containing zero or more of the -custom color key-value pairs must be created. The recognized keys -and their default values are shown below:</p><code><pre> -AnsiColorLogger.ERROR_COLOR=2;31 -AnsiColorLogger.WARNING_COLOR=2;35 -AnsiColorLogger.INFO_COLOR=2;36 -AnsiColorLogger.VERBOSE_COLOR=2;32 -AnsiColorLogger.DEBUG_COLOR=2;34</pre></code> -<p>Each key takes as value a color combination defined as -<b>Attribute;Foreground;Background</b>. In the above example, background -value has not been used.</p> -<p>This file must be specified as the value of a system variable -named ant.logger.defaults and passed as an argument using the -D -option to the <b>java</b> command that invokes the Ant application. -An easy way to achieve this is to add -Dant.logger.defaults= -<i>/path/to/your/file</i> to the ANT_OPTS environment variable. -Ant's launching script recognizes this flag and will pass it to -the java command appropriately.</p> -<p>Format:</p><pre> -AnsiColorLogger.*=Attribute;Foreground;Background - -Attribute is one of the following: -0 -> Reset All Attributes (return to normal mode) -1 -> Bright (Usually turns on BOLD) -2 -> Dim -3 -> Underline -5 -> link -7 -> Reverse -8 -> Hidden - -Foreground is one of the following: -30 -> Black -31 -> Red -32 -> Green -33 -> Yellow -34 -> Blue -35 -> Magenta -36 -> Cyan -37 -> White - -Background is one of the following: -40 -> Black -41 -> Red -42 -> Green -43 -> Yellow -44 -> Blue -45 -> Magenta -46 -> Cyan -47 -> White</pre> - -<blockquote> -<p><code>ant -logger org.apache.tools.ant.listener.AnsiColorLogger</code></p> -</blockquote> - - - -<h3><a name="Log4jListener">Log4jListener</a></h3> -<p>Passes build events to Log4j, using the full classname's of the generator of -each build event as the category:</p> -<ul> - <li>build started / build finished - org.apache.tools.ant.Project</li> - <li>target started / target finished - org.apache.tools.ant.Target</li> - <li>task started / task finished - the fully qualified classname of the task</li> - <li>message logged - the classname of one of the above, so if a task logs a - message, its classname is the category used, and so on.</li> -</ul> -<p>All start events are logged as INFO. Finish events are either logged as -INFO or ERROR depending on whether the build failed during that stage. Message -events are logged according to their Ant logging level, mapping directly to a -corresponding Log4j level.</p> - -<blockquote> -<p><code>ant -listener org.apache.tools.ant.listener.Log4jListener</code></p> -</blockquote> - -<p>To use Log4j you will need the Log4j JAR file and a 'log4j.properties' -configuration file. Both should be placed somewhere in your Ant -classpath. If the log4j.properties is in your project root folder you can -add this with <i>-lib</i> option:</p> - -<blockquote> -<pre><code>ant -listener org.apache.tools.ant.listener.Log4jListener -lib .</code></pre> -</blockquote> - -<p>If, for example, you wanted to capture the same information output to the -console by the DefaultLogger and send it to a file named 'build.log', you -could use the following configuration:</p> - -<blockquote> -<pre><code>log4j.rootLogger=ERROR, LogFile -log4j.logger.org.apache.tools.ant.Project=INFO -log4j.logger.org.apache.tools.ant.Target=INFO -log4j.logger.org.apache.tools.ant.taskdefs=INFO -log4j.logger.org.apache.tools.ant.taskdefs.Echo=WARN - -log4j.appender.LogFile=org.apache.log4j.FileAppender -log4j.appender.LogFile.layout=org.apache.log4j.PatternLayout -log4j.appender.LogFile.layout.ConversionPattern=[%6r] %8c{1} : %m%n -log4j.appender.LogFile.file=build.log -</code></pre> -</blockquote> - -<p>For more information about configuring Log4J see <a href="http://logging.apache.org/log4j/docs/documentation.html">its -documentation page</a>.</p> - - - -<h3><a name="XmlLogger">XmlLogger</a></h3> -<p>Writes all build information out to an XML file named log.xml, or the value -of the <code>XmlLogger.file</code> property if present, when used as a -listener. When used as a logger, it writes all output to either the -console or to the value of <code>-logfile</code>. Whether used as a listener -or logger, the output is not generated until the build is complete, as it -buffers the information in order to provide timing information for task, -targets, and the project.</p> -<p>By default the XML file creates a reference to an XSLT file "log.xsl" in the current directory; -look in ANT_HOME/etc for one of these. You can set the property -<code>ant.XmlLogger.stylesheet.uri</code> to provide a uri to a style sheet. -this can be a relative or absolute file path, or an http URL. -If you set the property to the empty string, "", no XSLT transform -is declared at all.</p> - -<blockquote> -<p><code>ant -listener org.apache.tools.ant.XmlLogger</code><br> -<code>ant -logger org.apache.tools.ant.XmlLogger -verbose -logfile build_log.xml</code></p> -</blockquote> - - - - -<h3><a name="TimestampedLogger">TimestampedLogger</a></h3> -<p> - Acts like the default logger, except that the final success/failure message also includes - the time that the build completed. For example: -</p> -<pre> - BUILD SUCCESSFUL - at 16/08/05 16:24 -</pre> -<p>To use this listener, use the command:</p> - -<blockquote> -<code>ant -logger org.apache.tools.ant.listener.TimestampedLogger</code> -</blockquote> - - - -<h3><a name="BigProjectLogger">BigProjectLogger</a></h3> -<p> - This logger is designed to make examining the logs of a big build easier, - especially those run under continuous integration tools. It -</p> -<ol> - <li>When entering a child project, prints its name and directory</li> - <li>When exiting a child project, prints its name</li> - <li>Includes the name of the project when printing a target</li> - <li>Omits logging the names of all targets that have no direct task output</li> - <li>Includes the build finished timestamp of the TimeStamp logger</li> -</ol> -<p> - This is useful when using <subant> to build a large project - from many smaller projects -the output shows which particular - project is building. Here is an example in which "clean" is being called - on all a number of child projects, only some of which perform work: -</p> -<pre> - -====================================================================== -Entering project "xunit" -In /home/ant/components/xunit -====================================================================== - -xunit.clean: - [delete] Deleting directory /home/ant/components/xunit/build - [delete] Deleting directory /home/ant/components/xunit/dist - -====================================================================== -Exiting project "xunit" -====================================================================== - -====================================================================== -Entering project "junit" -In /home/ant/components/junit -====================================================================== - -====================================================================== -Exiting project "junit" -====================================================================== -</pre> - -<p> - The entry and exit messages are very verbose in this example, but in - a big project compiling or testing many child components, the messages - are reduced to becoming clear delimiters of where different projects - are in charge -or more importantly, which project is failing. -</p> -<p>To use this listener, use the command:</p> -<blockquote> -<code>ant -logger org.apache.tools.ant.listener.BigProjectLogger</code> -</blockquote> - -<h3><a name="SimpleBigProjectLogger">SimpleBigProjectLogger</a></h3> -<p>Like <code>BigProjectLogger</code>, project-qualified target names are printed, -useful for big builds with subprojects. -Otherwise it is as quiet as <code>NoBannerLogger</code>:</p> -<pre> -Buildfile: /sources/myapp/build.xml - -myapp-lib.compile: -Created dir: /sources/myapp/lib/build/classes -Compiling 1 source file to /sources/myapp/lib/build/classes - -myapp-lib.jar: -Building jar: /sources/myapp/lib/build/lib.jar - -myapp.compile: -Created dir: /sources/myapp/build/classes -Compiling 2 source files to /sources/myapp/build/classes - -myapp.jar: -Building jar: /sources/myapp/build/myapp.jar - -BUILD SUCCESSFUL -Total time: 1 second -</pre> -<p><b>since Ant 1.8.1</b></p> -<p>To use this listener, use the command:</p> -<blockquote> -<code>ant -logger org.apache.tools.ant.listener.SimpleBigProjectLogger</code> -</blockquote> - -<h3><a name="ProfileLogger">ProfileLogger</a></h3> -<p>This logger stores the time needed for executing a task, target and the whole build and prints -these information. The output contains a timestamp when entering the build, target or task and a timestamp and the needed time when exiting. -</p> -<!-- This is the 'since' as described in the Loggers JavaDoc --> -<p><b>since Ant 1.8.0</b></p> -<h4>Example</h4> -Having that buildfile -<pre> -<project> - <target name="aTarget"> - <echo>echo-task</echo> - <zip destfile="my.zip"> - <fileset dir="${ant.home}"/> - </zip> - </target> - <target name="anotherTarget" depends="aTarget"> - <echo>another-echo-task</echo> - </target> -</project> -</pre> -and executing with <tt>ant -logger org.apache.tools.ant.listener.ProfileLogger anotherTarget</tt> gives that output (with other timestamps and duration of course ;) : -<pre> -Buildfile: ...\build.xml - -Target aTarget: started Thu Jan 22 09:01:00 CET 2009 - -echo: started Thu Jan 22 09:01:00 CET 2009 - [echo] echo-task - -echo: finished Thu Jan 22 09:01:00 CET 2009 (250ms) - -zip: started Thu Jan 22 09:01:00 CET 2009 - [zip] Building zip: ...\my.zip - -zip: finished Thu Jan 22 09:01:01 CET 2009 (1313ms) - -Target aTarget: finished Thu Jan 22 09:01:01 CET 2009 (1719ms) - -Target anotherTarget: started Thu Jan 22 09:01:01 CET 2009 - -echo: started Thu Jan 22 09:01:01 CET 2009 - [echo] another-echo-task - -echo: finished Thu Jan 22 09:01:01 CET 2009 (0ms) - -Target anotherTarget: finished Thu Jan 22 09:01:01 CET 2009 (0ms) - -BUILD SUCCESSFUL -Total time: 2 seconds -</pre> - - - -<h2><a name="dev">Writing your own</a></h2> - -<p>See the <a href="develop.html#buildevents">Build Events</a> section for -developers.</p> - -<p>Notes:</p> - -<ul> - <li> - A listener or logger should not write to standard output or error in the <code>messageLogged() method</code>; - Ant captures these internally and it will trigger an infinite loop. - </li> - <li> - Logging is synchronous; all listeners and loggers are called one after the other, with the build blocking until - the output is processed. Slow logging means a slow build. - </li> - <li>When a build is started, and <code>BuildListener.buildStarted(BuildEvent event)</code> is called, - the project is not fully functional. The build has started, yes, and the event.getProject() method call - returns the Project instance, but that project is initialized with JVM and ant properties, nor has it - parsed the build file yet. You cannot call <code>Project.getProperty()</code> for property lookup, or - <code>Project.getName()</code> to get the project name (it will return null). - </li> - <li> - Classes that implement <code>org.apache.tools.ant.SubBuildListener</code> receive notifications when child projects - start and stop. - </li> -</ul> - -</body> -</html> |