blob: 9aabba3d68573afa7b761801292d321a8df3bf44 [file] [log] [blame]
<html>
<head>
<title>
log4cxx - Documentation
</title>
<link href="../css/doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body bgcolor="#ffffff" text="#000000" link="#525D76">
<!-- START Header table -->
<table border="0" cellspacing="0" width="90%">
<!-- TOP IMAGE -->
<tr>
<td colspan="2">
<a href="http://logging.apache.org">
<img src="http://logging.apache.org/images/ls-logo.jpg" align="left" border="0"/>
</a>
</td>
</tr>
</table>
<!-- END Header table -->
<!-- START main table -->
<table id="main" border="0" width="90%" cellspacing="2" cellpadding="0">
<tr><td colspan="2">
<hr noshade="" size="1"/>
</td></tr>
<tr>
<!-- LEFT SIDE NAVIGATION -->
<td id="navbar" valign="top">
<!-- ============================================================ -->
<table id="navbar" border="0" cellspacing="0" cellpadding="0">
<tr >
<td class="navbarHeader" nowrap="true">
<strong>Apache</strong>
</td>
</tr>
<tr><td class="navbarItem"><small> <a href="http://www.apache.org">Apache Home</a>
</small></td></tr>
<tr><td class="navbarItem"><small> <a href="http://logging.apache.org/">Logging Services</a>
</small></td></tr>
<tr >
<td class="navbarHeader" nowrap="true">
<strong>log4cxx project</strong>
</td>
</tr>
<tr><td class="navbarItem"><small> <a href="../index.html">About</a>
</small></td></tr>
<tr><td class="navbarItem"><small> <a href="../news.html">News</a>
</small></td></tr>
<tr><td class="navbarItem"><small> <a href="../team.html">Team</a>
</small></td></tr>
<tr><td class="navbarItem"><small> <a href="../manual/index.html">Documentation</a>
</small></td></tr>
<tr><td class="navbarItem"><small> <a href="../performance.html">Performance</a>
</small></td></tr>
<tr><td class="navbarItem"><small> <a href="../download.html">Download</a>
</small></td></tr>
</table>
</td>
<td id="mainContents" align="left" valign="top">
<hr>
<!-- Generated by Doxygen 1.3.5 -->
<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a></div>
<h1>Appender Class Reference</h1>Inheritance diagram for Appender:<p><center><img src="classlog4cxx_1_1Appender__inherit__graph.png" border="0" usemap="#Appender__inherit__map" alt="Inheritance graph"></center>
<map name="Appender__inherit__map">
<area href="classlog4cxx_1_1AppenderSkeleton.html" shape="rect" coords="7,156,132,174" alt="">
<area href="classlog4cxx_1_1spi_1_1OptionHandler.html" shape="rect" coords="20,17,119,36" alt="">
</map>
<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for Appender:<p><center><img src="classlog4cxx_1_1Appender__coll__graph.png" border="0" usemap="#Appender__coll__map" alt="Collaboration graph"></center>
<map name="Appender__coll__map">
<area href="classlog4cxx_1_1spi_1_1OptionHandler.html" shape="rect" coords="7,86,105,105" alt="">
<area href="classlog4cxx_1_1helpers_1_1Object.html" shape="rect" coords="29,17,83,36" alt="">
</map>
<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="classlog4cxx_1_1Appender-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
<tr><td></td></tr>
<tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classlog4cxx_1_1Appender.html#a1">addFilter</a> (const <a class="el" href="classlog4cxx_1_1helpers_1_1ObjectPtrT.html">spi::FilterPtr</a> &amp;newFilter)=0</td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>virtual const <a class="el" href="classlog4cxx_1_1helpers_1_1ObjectPtrT.html">spi::FilterPtr</a> &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classlog4cxx_1_1Appender.html#a2">getFilter</a> () const=0</td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classlog4cxx_1_1Appender.html#a3">clearFilters</a> ()=0</td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classlog4cxx_1_1Appender.html#a4">close</a> ()=0</td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classlog4cxx_1_1Appender.html#a5">doAppend</a> (const <a class="el" href="classlog4cxx_1_1helpers_1_1ObjectPtrT.html">spi::LoggingEventPtr</a> &amp;event)=0</td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>virtual const String &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classlog4cxx_1_1Appender.html#a6">getName</a> () const=0</td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classlog4cxx_1_1Appender.html#a7">setErrorHandler</a> (const <a class="el" href="classlog4cxx_1_1helpers_1_1ObjectPtrT.html">spi::ErrorHandlerPtr</a> &amp;errorHandler)=0</td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>virtual const <a class="el" href="classlog4cxx_1_1helpers_1_1ObjectPtrT.html">spi::ErrorHandlerPtr</a> &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classlog4cxx_1_1Appender.html#a8">getErrorHandler</a> () const=0</td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classlog4cxx_1_1Appender.html#a9">setLayout</a> (const <a class="el" href="classlog4cxx_1_1helpers_1_1ObjectPtrT.html">LayoutPtr</a> &amp;layout)=0</td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>virtual const <a class="el" href="classlog4cxx_1_1helpers_1_1ObjectPtrT.html">LayoutPtr</a> &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classlog4cxx_1_1Appender.html#a10">getLayout</a> () const=0</td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classlog4cxx_1_1Appender.html#a11">setName</a> (const String &amp;name)=0</td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>virtual bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="classlog4cxx_1_1Appender.html#a12">requiresLayout</a> () const=0</td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Implement this interface for your own strategies for outputting log statements.
<p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="a1" doxytag="log4cxx::Appender::addFilter" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> virtual void addFilter </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">const <a class="el" href="classlog4cxx_1_1helpers_1_1ObjectPtrT.html">spi::FilterPtr</a> &amp;&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>newFilter</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap><code> [pure virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Add a filter to the end of the filter list.
<p>
Implemented in <a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#a4">AppenderSkeleton</a>. </td>
</tr>
</table>
<a class="anchor" name="a3" doxytag="log4cxx::Appender::clearFilters" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> virtual void clearFilters </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="mdname1" valign="top" nowrap> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap><code> [pure virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Clear the list of filters by removing all the filters in it.
<p>
Implemented in <a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#a5">AppenderSkeleton</a>. </td>
</tr>
</table>
<a class="anchor" name="a4" doxytag="log4cxx::Appender::close" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> virtual void close </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="mdname1" valign="top" nowrap> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap><code> [pure virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Release any resources allocated within the appender such as file handles, network connections, etc. <p>
It is a programming error to append to a closed appender.
<p>
Implemented in <a class="el" href="classlog4cxx_1_1AsyncAppender.html#a4">AsyncAppender</a>, <a class="el" href="classlog4cxx_1_1db_1_1ODBCAppender.html#a4">ODBCAppender</a>, <a class="el" href="classlog4cxx_1_1net_1_1SMTPAppender.html#a7">SMTPAppender</a>, <a class="el" href="classlog4cxx_1_1net_1_1SocketAppender.html#a6">SocketAppender</a>, <a class="el" href="classlog4cxx_1_1net_1_1SocketHubAppender.html#a5">SocketHubAppender</a>, <a class="el" href="classlog4cxx_1_1net_1_1SyslogAppender.html#a4">SyslogAppender</a>, <a class="el" href="classlog4cxx_1_1net_1_1TelnetAppender.html#a7">TelnetAppender</a>, <a class="el" href="classlog4cxx_1_1net_1_1XMLSocketAppender.html#a6">XMLSocketAppender</a>, <a class="el" href="classlog4cxx_1_1nt_1_1NTEventLogAppender.html#a4">NTEventLogAppender</a>, and <a class="el" href="classlog4cxx_1_1WriterAppender.html#a6">WriterAppender</a>. </td>
</tr>
</table>
<a class="anchor" name="a5" doxytag="log4cxx::Appender::doAppend" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> virtual void doAppend </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">const <a class="el" href="classlog4cxx_1_1helpers_1_1ObjectPtrT.html">spi::LoggingEventPtr</a> &amp;&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>event</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap><code> [pure virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Log in <code><a class="el" href="classlog4cxx_1_1Appender.html">Appender</a></code> specific way. When appropriate, Loggers will call the <code>doAppend</code> method of appender implementations in order to log.
<p>
Implemented in <a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#a13">AppenderSkeleton</a>. </td>
</tr>
</table>
<a class="anchor" name="a8" doxytag="log4cxx::Appender::getErrorHandler" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> virtual const <a class="el" href="classlog4cxx_1_1helpers_1_1ObjectPtrT.html">spi::ErrorHandlerPtr</a>&amp; getErrorHandler </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="mdname1" valign="top" nowrap> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap> const<code> [pure virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Returns the <a class="el" href="classlog4cxx_1_1spi_1_1ErrorHandler.html">ErrorHandler</a> for this appender.
<p>
Implemented in <a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#a6">AppenderSkeleton</a>. </td>
</tr>
</table>
<a class="anchor" name="a2" doxytag="log4cxx::Appender::getFilter" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> virtual const <a class="el" href="classlog4cxx_1_1helpers_1_1ObjectPtrT.html">spi::FilterPtr</a>&amp; getFilter </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="mdname1" valign="top" nowrap> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap> const<code> [pure virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Returns the head Filter. The Filters are organized in a linked list and so all Filters on this <a class="el" href="classlog4cxx_1_1Appender.html">Appender</a> are available through the result.<p>
<dl compact><dt><b>Returns:</b></dt><dd>the head Filter or null, if no Filters are present </dd></dl>
<p>
Implemented in <a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#a7">AppenderSkeleton</a>. </td>
</tr>
</table>
<a class="anchor" name="a10" doxytag="log4cxx::Appender::getLayout" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> virtual const <a class="el" href="classlog4cxx_1_1helpers_1_1ObjectPtrT.html">LayoutPtr</a>&amp; getLayout </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="mdname1" valign="top" nowrap> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap> const<code> [pure virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Returns this appenders layout.
<p>
Implemented in <a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#a9">AppenderSkeleton</a>. </td>
</tr>
</table>
<a class="anchor" name="a6" doxytag="log4cxx::Appender::getName" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> virtual const String&amp; getName </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="mdname1" valign="top" nowrap> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap> const<code> [pure virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Get the name of this appender. The name uniquely identifies the appender.
<p>
Implemented in <a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#a10">AppenderSkeleton</a>. </td>
</tr>
</table>
<a class="anchor" name="a12" doxytag="log4cxx::Appender::requiresLayout" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> virtual bool requiresLayout </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="mdname1" valign="top" nowrap> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap> const<code> [pure virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Configurators call this method to determine if the appender requires a layout. If this method returns <code>true</code>, meaning that layout is required, then the configurator will configure an layout using the configuration information at its disposal. If this method returns <code>false</code>, meaning that a layout is not required, then layout configuration will be skipped even if there is available layout configuration information at the disposal of the configurator..<p>
In the rather exceptional case, where the appender implementation admits a layout but can also work without it, then the appender should return <code>true</code>.
<p>
Implemented in <a class="el" href="classlog4cxx_1_1AsyncAppender.html#a12">AsyncAppender</a>, <a class="el" href="classlog4cxx_1_1db_1_1ODBCAppender.html#a6">ODBCAppender</a>, <a class="el" href="classlog4cxx_1_1net_1_1SMTPAppender.html#a10">SMTPAppender</a>, <a class="el" href="classlog4cxx_1_1net_1_1SocketAppender.html#a10">SocketAppender</a>, <a class="el" href="classlog4cxx_1_1net_1_1SocketHubAppender.html#a8">SocketHubAppender</a>, <a class="el" href="classlog4cxx_1_1net_1_1SyslogAppender.html#a8">SyslogAppender</a>, <a class="el" href="classlog4cxx_1_1net_1_1TelnetAppender.html#a2">TelnetAppender</a>, <a class="el" href="classlog4cxx_1_1net_1_1XMLSocketAppender.html#a10">XMLSocketAppender</a>, <a class="el" href="classlog4cxx_1_1nt_1_1NTEventLogAppender.html#a6">NTEventLogAppender</a>, and <a class="el" href="classlog4cxx_1_1WriterAppender.html#a9">WriterAppender</a>. </td>
</tr>
</table>
<a class="anchor" name="a7" doxytag="log4cxx::Appender::setErrorHandler" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> virtual void setErrorHandler </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">const <a class="el" href="classlog4cxx_1_1helpers_1_1ObjectPtrT.html">spi::ErrorHandlerPtr</a> &amp;&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>errorHandler</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap><code> [pure virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Set the <a class="el" href="classlog4cxx_1_1spi_1_1ErrorHandler.html">ErrorHandler</a> for this appender.
<p>
Implemented in <a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#a14">AppenderSkeleton</a>. </td>
</tr>
</table>
<a class="anchor" name="a9" doxytag="log4cxx::Appender::setLayout" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> virtual void setLayout </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">const <a class="el" href="classlog4cxx_1_1helpers_1_1ObjectPtrT.html">LayoutPtr</a> &amp;&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>layout</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap><code> [pure virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Set the <a class="el" href="classlog4cxx_1_1Layout.html">Layout</a> for this appender.
<p>
Implemented in <a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#a15">AppenderSkeleton</a>. </td>
</tr>
</table>
<a class="anchor" name="a11" doxytag="log4cxx::Appender::setName" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
<tr>
<td class="mdRow">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> virtual void setName </td>
<td class="md" valign="top">(&nbsp;</td>
<td class="md" nowrap valign="top">const String &amp;&nbsp;</td>
<td class="mdname1" valign="top" nowrap> <em>name</em> </td>
<td class="md" valign="top">&nbsp;)&nbsp;</td>
<td class="md" nowrap><code> [pure virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
&nbsp;
</td>
<td>
<p>
Set the name of this appender. The name is used by other components to identify this appender.
<p>
Implemented in <a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#a16">AppenderSkeleton</a>. </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following file:<ul>
<li>appender.h</ul>
</td>
</tr>
<!-- FOOTER -->
<tr><td colspan="2">
<hr noshade="" size="1"/>
</td></tr>
<tr><td colspan="2">
<div align="center"><font color="#525D76" size="-1"><em>
Copyright &#169; 1999-2004, Apache Software Foundation
</em></font></div>
</td></tr>
</table>
<!-- END main table -->
</body>
</html>
<!-- end the processing -->