blob: 1044ad9e7ed34fbb3a7100c0270a0c9649e964aa [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Apache log4cxx: log4cxx::net::SocketHubAppender Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
$(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="customdoxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">Apache log4cxx
&#160;<span id="projectnumber">Version 0.13.0</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
<div id="nav-tree">
<div id="nav-tree-contents">
<div id="nav-sync" class="sync"></div>
</div>
</div>
<div id="splitbar" style="-moz-user-select:none;"
class="ui-resizable-handle">
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('classlog4cxx_1_1net_1_1SocketHubAppender.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div class="header">
<div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classlog4cxx_1_1net_1_1SocketHubAppender-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">log4cxx::net::SocketHubAppender Class Reference</div> </div>
</div><!--header-->
<div class="contents">
<p>Sends <a class="el" href="classlog4cxx_1_1spi_1_1LoggingEvent.html">LoggingEvent</a> objects to a set of remote log servers, usually a SocketNode.
<a href="classlog4cxx_1_1net_1_1SocketHubAppender.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="sockethubappender_8h_source.html">sockethubappender.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for log4cxx::net::SocketHubAppender:</div>
<div class="dyncontent">
<div class="center">
<img src="classlog4cxx_1_1net_1_1SocketHubAppender.png" usemap="#log4cxx::net::SocketHubAppender_map" alt=""/>
<map id="log4cxx::net::SocketHubAppender_map" name="log4cxx::net::SocketHubAppender_map">
<area href="classlog4cxx_1_1AppenderSkeleton.html" title="Implementation base class for all appenders. " alt="log4cxx::AppenderSkeleton" shape="rect" coords="105,168,306,192"/>
<area href="classlog4cxx_1_1Appender.html" title="Implement this interface for your own strategies for outputting log statements. " alt="log4cxx::Appender" shape="rect" coords="0,112,201,136"/>
<area href="classlog4cxx_1_1helpers_1_1Object.html" title="base class for java-like objects. " alt="log4cxx::helpers::Object" shape="rect" coords="211,112,412,136"/>
<area href="classlog4cxx_1_1spi_1_1OptionHandler.html" title="A string based interface to configure package components. " alt="log4cxx::spi::OptionHandler" shape="rect" coords="0,56,201,80"/>
<area href="classlog4cxx_1_1helpers_1_1Object.html" title="base class for java-like objects. " alt="log4cxx::helpers::Object" shape="rect" coords="0,0,201,24"/>
</map>
</div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a8d6f2f3d5cc1e2d71a0fece8de5a9ec4"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1net_1_1SocketHubAppender.html#a8d6f2f3d5cc1e2d71a0fece8de5a9ec4">SocketHubAppender</a> ()</td></tr>
<tr class="separator:a8d6f2f3d5cc1e2d71a0fece8de5a9ec4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6bc6d48e9604ea8c73facf3bdeb38ef0"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1net_1_1SocketHubAppender.html#a6bc6d48e9604ea8c73facf3bdeb38ef0">~SocketHubAppender</a> ()</td></tr>
<tr class="separator:a6bc6d48e9604ea8c73facf3bdeb38ef0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1c916bc1174dd4c43e3f3d646b59aa0f"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1net_1_1SocketHubAppender.html#a1c916bc1174dd4c43e3f3d646b59aa0f">SocketHubAppender</a> (int port)</td></tr>
<tr class="memdesc:a1c916bc1174dd4c43e3f3d646b59aa0f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Connects to remote server at <code>address</code> and <code>port</code>. <a href="#a1c916bc1174dd4c43e3f3d646b59aa0f">More...</a><br /></td></tr>
<tr class="separator:a1c916bc1174dd4c43e3f3d646b59aa0f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acf038878038026f2bbe6f23c46189df2"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1net_1_1SocketHubAppender.html#acf038878038026f2bbe6f23c46189df2">activateOptions</a> (<a class="el" href="classlog4cxx_1_1helpers_1_1Pool.html">log4cxx::helpers::Pool</a> &amp;p)</td></tr>
<tr class="memdesc:acf038878038026f2bbe6f23c46189df2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set up the socket server on the specified port. <a href="#acf038878038026f2bbe6f23c46189df2">More...</a><br /></td></tr>
<tr class="separator:acf038878038026f2bbe6f23c46189df2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a92245217aef3820ed4ab500481be3848"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1net_1_1SocketHubAppender.html#a92245217aef3820ed4ab500481be3848">setOption</a> (const <a class="el" href="namespacelog4cxx.html#aa2308ed05fef2a1366066cb38b177e94">LogString</a> &amp;option, const <a class="el" href="namespacelog4cxx.html#aa2308ed05fef2a1366066cb38b177e94">LogString</a> &amp;value)</td></tr>
<tr class="memdesc:a92245217aef3820ed4ab500481be3848"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set options. <a href="#a92245217aef3820ed4ab500481be3848">More...</a><br /></td></tr>
<tr class="separator:a92245217aef3820ed4ab500481be3848"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a57721f7fc85bc133561eca66f19cc83c"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1net_1_1SocketHubAppender.html#a57721f7fc85bc133561eca66f19cc83c">close</a> ()</td></tr>
<tr class="memdesc:a57721f7fc85bc133561eca66f19cc83c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Release any resources allocated within the appender such as file handles, network connections, etc. <a href="#a57721f7fc85bc133561eca66f19cc83c">More...</a><br /></td></tr>
<tr class="separator:a57721f7fc85bc133561eca66f19cc83c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac75701ec048a40ef3ac83a8c8dc3475e"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1net_1_1SocketHubAppender.html#ac75701ec048a40ef3ac83a8c8dc3475e">append</a> (const <a class="el" href="namespacelog4cxx_1_1spi.html#aae6992e1b33222c26bdc1173b6aedc6c">spi::LoggingEventPtr</a> &amp;event, <a class="el" href="classlog4cxx_1_1helpers_1_1Pool.html">log4cxx::helpers::Pool</a> &amp;p)</td></tr>
<tr class="memdesc:ac75701ec048a40ef3ac83a8c8dc3475e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Append an event to all of current connections. <a href="#ac75701ec048a40ef3ac83a8c8dc3475e">More...</a><br /></td></tr>
<tr class="separator:ac75701ec048a40ef3ac83a8c8dc3475e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2b788c4eb7b92b839c779a0a3f01e687"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1net_1_1SocketHubAppender.html#a2b788c4eb7b92b839c779a0a3f01e687">requiresLayout</a> () const</td></tr>
<tr class="memdesc:a2b788c4eb7b92b839c779a0a3f01e687"><td class="mdescLeft">&#160;</td><td class="mdescRight">The <a class="el" href="classlog4cxx_1_1net_1_1SocketHubAppender.html" title="Sends LoggingEvent objects to a set of remote log servers, usually a SocketNode. ">SocketHubAppender</a> does not use a layout. <a href="#a2b788c4eb7b92b839c779a0a3f01e687">More...</a><br /></td></tr>
<tr class="separator:a2b788c4eb7b92b839c779a0a3f01e687"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a56a8e1d11bc267883b397cdf479af168"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1net_1_1SocketHubAppender.html#a56a8e1d11bc267883b397cdf479af168">setPort</a> (int port1)</td></tr>
<tr class="memdesc:a56a8e1d11bc267883b397cdf479af168"><td class="mdescLeft">&#160;</td><td class="mdescRight">The <b>Port</b> option takes a positive integer representing the port where the server is waiting for connections. <a href="#a56a8e1d11bc267883b397cdf479af168">More...</a><br /></td></tr>
<tr class="separator:a56a8e1d11bc267883b397cdf479af168"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a37a63d79ab94b04528b66617fdb59712"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1net_1_1SocketHubAppender.html#a37a63d79ab94b04528b66617fdb59712">getPort</a> () const</td></tr>
<tr class="memdesc:a37a63d79ab94b04528b66617fdb59712"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns value of the <b>Port</b> option. <a href="#a37a63d79ab94b04528b66617fdb59712">More...</a><br /></td></tr>
<tr class="separator:a37a63d79ab94b04528b66617fdb59712"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2711afc4f0fd148c69dd5670b1ed376f"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1net_1_1SocketHubAppender.html#a2711afc4f0fd148c69dd5670b1ed376f">setLocationInfo</a> (bool locationInfo1)</td></tr>
<tr class="memdesc:a2711afc4f0fd148c69dd5670b1ed376f"><td class="mdescLeft">&#160;</td><td class="mdescRight">The <b>LocationInfo</b> option takes a boolean value. <a href="#a2711afc4f0fd148c69dd5670b1ed376f">More...</a><br /></td></tr>
<tr class="separator:a2711afc4f0fd148c69dd5670b1ed376f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a64c38e9eda184c97e16e4e053ada5998"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1net_1_1SocketHubAppender.html#a64c38e9eda184c97e16e4e053ada5998">getLocationInfo</a> () const</td></tr>
<tr class="memdesc:a64c38e9eda184c97e16e4e053ada5998"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns value of the <b>LocationInfo</b> option. <a href="#a64c38e9eda184c97e16e4e053ada5998">More...</a><br /></td></tr>
<tr class="separator:a64c38e9eda184c97e16e4e053ada5998"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classlog4cxx_1_1AppenderSkeleton"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classlog4cxx_1_1AppenderSkeleton')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classlog4cxx_1_1AppenderSkeleton.html">log4cxx::AppenderSkeleton</a></td></tr>
<tr class="memitem:a1395bdbbd217ee7d36eec1c05aa15dd2 inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#a1395bdbbd217ee7d36eec1c05aa15dd2">AppenderSkeleton</a> ()</td></tr>
<tr class="separator:a1395bdbbd217ee7d36eec1c05aa15dd2 inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa3aee1ae3a3825ae2249e9fc520c4cce inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#aa3aee1ae3a3825ae2249e9fc520c4cce">AppenderSkeleton</a> (const <a class="el" href="namespacelog4cxx.html#abdcdc973d46623f53379dbb4ba33ae86">LayoutPtr</a> &amp;<a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#a035f92bf42b644be805458e1ac498ce1">layout</a>)</td></tr>
<tr class="separator:aa3aee1ae3a3825ae2249e9fc520c4cce inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af6d1ab262b89bbea3a1e90b571dd844f inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#af6d1ab262b89bbea3a1e90b571dd844f">finalize</a> ()</td></tr>
<tr class="memdesc:af6d1ab262b89bbea3a1e90b571dd844f inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="mdescLeft">&#160;</td><td class="mdescRight">Finalize this appender by calling the derived class' <code>close</code> method. <a href="classlog4cxx_1_1AppenderSkeleton.html#af6d1ab262b89bbea3a1e90b571dd844f">More...</a><br /></td></tr>
<tr class="separator:af6d1ab262b89bbea3a1e90b571dd844f inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a25c426350ebff1f9217f9d2e3189f0c6 inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#a25c426350ebff1f9217f9d2e3189f0c6">addFilter</a> (const <a class="el" href="namespacelog4cxx_1_1spi.html#a98940dd5338fd77ed3018e8ad9d5ac97">spi::FilterPtr</a> &amp;newFilter)</td></tr>
<tr class="memdesc:a25c426350ebff1f9217f9d2e3189f0c6 inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add a filter to end of the filter list. <a href="classlog4cxx_1_1AppenderSkeleton.html#a25c426350ebff1f9217f9d2e3189f0c6">More...</a><br /></td></tr>
<tr class="separator:a25c426350ebff1f9217f9d2e3189f0c6 inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a727bc84c9e9dc086f8b6a6b385a54c79 inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#a727bc84c9e9dc086f8b6a6b385a54c79">clearFilters</a> ()</td></tr>
<tr class="memdesc:a727bc84c9e9dc086f8b6a6b385a54c79 inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="mdescLeft">&#160;</td><td class="mdescRight">Clear the filters chain. <a href="classlog4cxx_1_1AppenderSkeleton.html#a727bc84c9e9dc086f8b6a6b385a54c79">More...</a><br /></td></tr>
<tr class="separator:a727bc84c9e9dc086f8b6a6b385a54c79 inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2aac3aeb852117bba83add45eb71c018 inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespacelog4cxx_1_1spi.html#ae60ee4bd7f26321752853e9e3cf92af6">spi::ErrorHandlerPtr</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#a2aac3aeb852117bba83add45eb71c018">getErrorHandler</a> () const</td></tr>
<tr class="memdesc:a2aac3aeb852117bba83add45eb71c018 inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the currently set <a class="el" href="classlog4cxx_1_1spi_1_1ErrorHandler.html" title="Appenders may delegate their error handling to ErrorHandlers. ">spi::ErrorHandler</a> for this <a class="el" href="classlog4cxx_1_1Appender.html" title="Implement this interface for your own strategies for outputting log statements. ">Appender</a>. <a href="classlog4cxx_1_1AppenderSkeleton.html#a2aac3aeb852117bba83add45eb71c018">More...</a><br /></td></tr>
<tr class="separator:a2aac3aeb852117bba83add45eb71c018 inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2e699788d82283fa7c69669ee8da5a4a inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacelog4cxx_1_1spi.html#a98940dd5338fd77ed3018e8ad9d5ac97">spi::FilterPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#a2e699788d82283fa7c69669ee8da5a4a">getFilter</a> () const</td></tr>
<tr class="memdesc:a2e699788d82283fa7c69669ee8da5a4a inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the head Filter. <a href="classlog4cxx_1_1AppenderSkeleton.html#a2e699788d82283fa7c69669ee8da5a4a">More...</a><br /></td></tr>
<tr class="separator:a2e699788d82283fa7c69669ee8da5a4a inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a21e4a05850343c1360011a801868ba1f inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespacelog4cxx_1_1spi.html#a98940dd5338fd77ed3018e8ad9d5ac97">spi::FilterPtr</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#a21e4a05850343c1360011a801868ba1f">getFirstFilter</a> () const</td></tr>
<tr class="memdesc:a21e4a05850343c1360011a801868ba1f inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="mdescLeft">&#160;</td><td class="mdescRight">Return the first filter in the filter chain for this <a class="el" href="classlog4cxx_1_1Appender.html" title="Implement this interface for your own strategies for outputting log statements. ">Appender</a>. <a href="classlog4cxx_1_1AppenderSkeleton.html#a21e4a05850343c1360011a801868ba1f">More...</a><br /></td></tr>
<tr class="separator:a21e4a05850343c1360011a801868ba1f inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac5711ba4b4b83fce6e69964b1d69df97 inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacelog4cxx.html#abdcdc973d46623f53379dbb4ba33ae86">LayoutPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#ac5711ba4b4b83fce6e69964b1d69df97">getLayout</a> () const</td></tr>
<tr class="memdesc:ac5711ba4b4b83fce6e69964b1d69df97 inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the layout of this appender. <a href="classlog4cxx_1_1AppenderSkeleton.html#ac5711ba4b4b83fce6e69964b1d69df97">More...</a><br /></td></tr>
<tr class="separator:ac5711ba4b4b83fce6e69964b1d69df97 inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2b57c735d130d0de417a3e19d69addb5 inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacelog4cxx.html#aa2308ed05fef2a1366066cb38b177e94">LogString</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#a2b57c735d130d0de417a3e19d69addb5">getName</a> () const</td></tr>
<tr class="memdesc:a2b57c735d130d0de417a3e19d69addb5 inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the name of this <a class="el" href="classlog4cxx_1_1Appender.html" title="Implement this interface for your own strategies for outputting log statements. ">Appender</a>. <a href="classlog4cxx_1_1AppenderSkeleton.html#a2b57c735d130d0de417a3e19d69addb5">More...</a><br /></td></tr>
<tr class="separator:a2b57c735d130d0de417a3e19d69addb5 inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a174b92bffdc781600d32693e88120f85 inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="namespacelog4cxx.html#abab74d1809c0c810f3f7eae2c3fa511e">LevelPtr</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#a174b92bffdc781600d32693e88120f85">getThreshold</a> () const</td></tr>
<tr class="memdesc:a174b92bffdc781600d32693e88120f85 inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns this appenders threshold level. <a href="classlog4cxx_1_1AppenderSkeleton.html#a174b92bffdc781600d32693e88120f85">More...</a><br /></td></tr>
<tr class="separator:a174b92bffdc781600d32693e88120f85 inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8670b15977dcefc4f30f8d9cf0d6885 inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#aa8670b15977dcefc4f30f8d9cf0d6885">isAsSevereAsThreshold</a> (const <a class="el" href="namespacelog4cxx.html#abab74d1809c0c810f3f7eae2c3fa511e">LevelPtr</a> &amp;level) const</td></tr>
<tr class="memdesc:aa8670b15977dcefc4f30f8d9cf0d6885 inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="mdescLeft">&#160;</td><td class="mdescRight">Check whether the message level is below the appender's threshold. <a href="classlog4cxx_1_1AppenderSkeleton.html#aa8670b15977dcefc4f30f8d9cf0d6885">More...</a><br /></td></tr>
<tr class="separator:aa8670b15977dcefc4f30f8d9cf0d6885 inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad16d34a1b3d0c721e4804e568bf4aab3 inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#ad16d34a1b3d0c721e4804e568bf4aab3">doAppend</a> (const <a class="el" href="namespacelog4cxx_1_1spi.html#aae6992e1b33222c26bdc1173b6aedc6c">spi::LoggingEventPtr</a> &amp;event, <a class="el" href="classlog4cxx_1_1helpers_1_1Pool.html">log4cxx::helpers::Pool</a> &amp;<a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#af83019f8dc57c1b55305e53fe0d5e993">pool</a>)</td></tr>
<tr class="memdesc:ad16d34a1b3d0c721e4804e568bf4aab3 inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="mdescLeft">&#160;</td><td class="mdescRight">This method performs threshold checks and invokes filters before delegating actual logging to the subclasses specific <a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#a2e8b992ffcb778c67b4cb0ed694ab21c" title="Subclasses of AppenderSkeleton should implement this method to perform actual logging. ">AppenderSkeleton::append</a> method. <a href="classlog4cxx_1_1AppenderSkeleton.html#ad16d34a1b3d0c721e4804e568bf4aab3">More...</a><br /></td></tr>
<tr class="separator:ad16d34a1b3d0c721e4804e568bf4aab3 inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0eb836f2944163f9afbcbc52437dd3a4 inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#a0eb836f2944163f9afbcbc52437dd3a4">setErrorHandler</a> (const <a class="el" href="namespacelog4cxx_1_1spi.html#ae60ee4bd7f26321752853e9e3cf92af6">spi::ErrorHandlerPtr</a> eh)</td></tr>
<tr class="memdesc:a0eb836f2944163f9afbcbc52437dd3a4 inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the <a class="el" href="classlog4cxx_1_1spi_1_1ErrorHandler.html">ErrorHandler</a> for this <a class="el" href="classlog4cxx_1_1Appender.html" title="Implement this interface for your own strategies for outputting log statements. ">Appender</a>. <a href="classlog4cxx_1_1AppenderSkeleton.html#a0eb836f2944163f9afbcbc52437dd3a4">More...</a><br /></td></tr>
<tr class="separator:a0eb836f2944163f9afbcbc52437dd3a4 inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a56ea87bf10e4a81b92409eefc1e6e630 inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#a56ea87bf10e4a81b92409eefc1e6e630">setLayout</a> (const <a class="el" href="namespacelog4cxx.html#abdcdc973d46623f53379dbb4ba33ae86">LayoutPtr</a> &amp;layout1)</td></tr>
<tr class="memdesc:a56ea87bf10e4a81b92409eefc1e6e630 inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the layout for this appender. <a href="classlog4cxx_1_1AppenderSkeleton.html#a56ea87bf10e4a81b92409eefc1e6e630">More...</a><br /></td></tr>
<tr class="separator:a56ea87bf10e4a81b92409eefc1e6e630 inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:adc736d19cec497a07d5bebd0ebfa679f inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#adc736d19cec497a07d5bebd0ebfa679f">setName</a> (const <a class="el" href="namespacelog4cxx.html#aa2308ed05fef2a1366066cb38b177e94">LogString</a> &amp;name1)</td></tr>
<tr class="memdesc:adc736d19cec497a07d5bebd0ebfa679f inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the name of this <a class="el" href="classlog4cxx_1_1Appender.html" title="Implement this interface for your own strategies for outputting log statements. ">Appender</a>. <a href="classlog4cxx_1_1AppenderSkeleton.html#adc736d19cec497a07d5bebd0ebfa679f">More...</a><br /></td></tr>
<tr class="separator:adc736d19cec497a07d5bebd0ebfa679f inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a0d49cd8867995f2ad8bd1df8b0fcea inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#a9a0d49cd8867995f2ad8bd1df8b0fcea">setThreshold</a> (const <a class="el" href="namespacelog4cxx.html#abab74d1809c0c810f3f7eae2c3fa511e">LevelPtr</a> &amp;<a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#a1ae837b77627e510732e7f665c1e9ffd">threshold</a>)</td></tr>
<tr class="memdesc:a9a0d49cd8867995f2ad8bd1df8b0fcea inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set the threshold level. <a href="classlog4cxx_1_1AppenderSkeleton.html#a9a0d49cd8867995f2ad8bd1df8b0fcea">More...</a><br /></td></tr>
<tr class="separator:a9a0d49cd8867995f2ad8bd1df8b0fcea inherit pub_methods_classlog4cxx_1_1AppenderSkeleton"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classlog4cxx_1_1Appender"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classlog4cxx_1_1Appender')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classlog4cxx_1_1Appender.html">log4cxx::Appender</a></td></tr>
<tr class="memitem:adb76477fa620be64de22efe12b127ad5 inherit pub_methods_classlog4cxx_1_1Appender"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1Appender.html#adb76477fa620be64de22efe12b127ad5">~Appender</a> ()</td></tr>
<tr class="separator:adb76477fa620be64de22efe12b127ad5 inherit pub_methods_classlog4cxx_1_1Appender"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3de5f14c022eb449882a0b29562a18bd inherit pub_methods_classlog4cxx_1_1Appender"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1Appender.html#a3de5f14c022eb449882a0b29562a18bd">asdf</a> ()</td></tr>
<tr class="separator:a3de5f14c022eb449882a0b29562a18bd inherit pub_methods_classlog4cxx_1_1Appender"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classlog4cxx_1_1spi_1_1OptionHandler"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classlog4cxx_1_1spi_1_1OptionHandler')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classlog4cxx_1_1spi_1_1OptionHandler.html">log4cxx::spi::OptionHandler</a></td></tr>
<tr class="memitem:a556b59c5ef41477c0bc3f50efadc859e inherit pub_methods_classlog4cxx_1_1spi_1_1OptionHandler"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1spi_1_1OptionHandler.html#a556b59c5ef41477c0bc3f50efadc859e">~OptionHandler</a> ()</td></tr>
<tr class="separator:a556b59c5ef41477c0bc3f50efadc859e inherit pub_methods_classlog4cxx_1_1spi_1_1OptionHandler"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classlog4cxx_1_1helpers_1_1Object"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classlog4cxx_1_1helpers_1_1Object')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classlog4cxx_1_1helpers_1_1Object.html">log4cxx::helpers::Object</a></td></tr>
<tr class="memitem:a8ba23411233a652fac44a619e6356115 inherit pub_methods_classlog4cxx_1_1helpers_1_1Object"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1helpers_1_1Object.html#a8ba23411233a652fac44a619e6356115">~Object</a> ()</td></tr>
<tr class="separator:a8ba23411233a652fac44a619e6356115 inherit pub_methods_classlog4cxx_1_1helpers_1_1Object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9dac08272167c9af4c7d81e9e205a9de inherit pub_methods_classlog4cxx_1_1helpers_1_1Object"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1helpers_1_1Object.html#a9dac08272167c9af4c7d81e9e205a9de">instanceof</a> (const <a class="el" href="classlog4cxx_1_1helpers_1_1Class.html">Class</a> &amp;clazz) const =0</td></tr>
<tr class="separator:a9dac08272167c9af4c7d81e9e205a9de inherit pub_methods_classlog4cxx_1_1helpers_1_1Object"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4a24185c7ef795bd6ac70d69c22ca7d9 inherit pub_methods_classlog4cxx_1_1helpers_1_1Object"><td class="memItemLeft" align="right" valign="top">virtual const void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1helpers_1_1Object.html#a4a24185c7ef795bd6ac70d69c22ca7d9">cast</a> (const <a class="el" href="classlog4cxx_1_1helpers_1_1Class.html">Class</a> &amp;clazz) const =0</td></tr>
<tr class="separator:a4a24185c7ef795bd6ac70d69c22ca7d9 inherit pub_methods_classlog4cxx_1_1helpers_1_1Object"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
Additional Inherited Members</h2></td></tr>
<tr class="inherit_header pro_methods_classlog4cxx_1_1AppenderSkeleton"><td colspan="2" onclick="javascript:toggleInherit('pro_methods_classlog4cxx_1_1AppenderSkeleton')"><img src="closed.png" alt="-"/>&#160;Protected Member Functions inherited from <a class="el" href="classlog4cxx_1_1AppenderSkeleton.html">log4cxx::AppenderSkeleton</a></td></tr>
<tr class="memitem:ab78245358d76cd4fb2969cd15ea65481 inherit pro_methods_classlog4cxx_1_1AppenderSkeleton"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#ab78245358d76cd4fb2969cd15ea65481">doAppendImpl</a> (const <a class="el" href="namespacelog4cxx_1_1spi.html#aae6992e1b33222c26bdc1173b6aedc6c">spi::LoggingEventPtr</a> &amp;event, <a class="el" href="classlog4cxx_1_1helpers_1_1Pool.html">log4cxx::helpers::Pool</a> &amp;<a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#af83019f8dc57c1b55305e53fe0d5e993">pool</a>)</td></tr>
<tr class="separator:ab78245358d76cd4fb2969cd15ea65481 inherit pro_methods_classlog4cxx_1_1AppenderSkeleton"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classlog4cxx_1_1AppenderSkeleton"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classlog4cxx_1_1AppenderSkeleton')"><img src="closed.png" alt="-"/>&#160;Protected Attributes inherited from <a class="el" href="classlog4cxx_1_1AppenderSkeleton.html">log4cxx::AppenderSkeleton</a></td></tr>
<tr class="memitem:a035f92bf42b644be805458e1ac498ce1 inherit pro_attribs_classlog4cxx_1_1AppenderSkeleton"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacelog4cxx.html#abdcdc973d46623f53379dbb4ba33ae86">LayoutPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#a035f92bf42b644be805458e1ac498ce1">layout</a></td></tr>
<tr class="memdesc:a035f92bf42b644be805458e1ac498ce1 inherit pro_attribs_classlog4cxx_1_1AppenderSkeleton"><td class="mdescLeft">&#160;</td><td class="mdescRight">The layout variable does not need to be set if the appender implementation has its own layout. <a href="classlog4cxx_1_1AppenderSkeleton.html#a035f92bf42b644be805458e1ac498ce1">More...</a><br /></td></tr>
<tr class="separator:a035f92bf42b644be805458e1ac498ce1 inherit pro_attribs_classlog4cxx_1_1AppenderSkeleton"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a28141ef979d5b219761cfa75daa6710c inherit pro_attribs_classlog4cxx_1_1AppenderSkeleton"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacelog4cxx.html#aa2308ed05fef2a1366066cb38b177e94">LogString</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#a28141ef979d5b219761cfa75daa6710c">name</a></td></tr>
<tr class="memdesc:a28141ef979d5b219761cfa75daa6710c inherit pro_attribs_classlog4cxx_1_1AppenderSkeleton"><td class="mdescLeft">&#160;</td><td class="mdescRight">Appenders are named. <a href="classlog4cxx_1_1AppenderSkeleton.html#a28141ef979d5b219761cfa75daa6710c">More...</a><br /></td></tr>
<tr class="separator:a28141ef979d5b219761cfa75daa6710c inherit pro_attribs_classlog4cxx_1_1AppenderSkeleton"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1ae837b77627e510732e7f665c1e9ffd inherit pro_attribs_classlog4cxx_1_1AppenderSkeleton"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacelog4cxx.html#abab74d1809c0c810f3f7eae2c3fa511e">LevelPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#a1ae837b77627e510732e7f665c1e9ffd">threshold</a></td></tr>
<tr class="memdesc:a1ae837b77627e510732e7f665c1e9ffd inherit pro_attribs_classlog4cxx_1_1AppenderSkeleton"><td class="mdescLeft">&#160;</td><td class="mdescRight">There is no level threshold filtering by default. <a href="classlog4cxx_1_1AppenderSkeleton.html#a1ae837b77627e510732e7f665c1e9ffd">More...</a><br /></td></tr>
<tr class="separator:a1ae837b77627e510732e7f665c1e9ffd inherit pro_attribs_classlog4cxx_1_1AppenderSkeleton"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0257d7f72c07928c02a403acb080b93c inherit pro_attribs_classlog4cxx_1_1AppenderSkeleton"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacelog4cxx_1_1spi.html#ae60ee4bd7f26321752853e9e3cf92af6">spi::ErrorHandlerPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#a0257d7f72c07928c02a403acb080b93c">errorHandler</a></td></tr>
<tr class="memdesc:a0257d7f72c07928c02a403acb080b93c inherit pro_attribs_classlog4cxx_1_1AppenderSkeleton"><td class="mdescLeft">&#160;</td><td class="mdescRight">It is assumed and enforced that errorHandler is never null. <a href="classlog4cxx_1_1AppenderSkeleton.html#a0257d7f72c07928c02a403acb080b93c">More...</a><br /></td></tr>
<tr class="separator:a0257d7f72c07928c02a403acb080b93c inherit pro_attribs_classlog4cxx_1_1AppenderSkeleton"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5069c2dcb5ae9f81a4277b5bc3ae078c inherit pro_attribs_classlog4cxx_1_1AppenderSkeleton"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacelog4cxx_1_1spi.html#a98940dd5338fd77ed3018e8ad9d5ac97">spi::FilterPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#a5069c2dcb5ae9f81a4277b5bc3ae078c">headFilter</a></td></tr>
<tr class="memdesc:a5069c2dcb5ae9f81a4277b5bc3ae078c inherit pro_attribs_classlog4cxx_1_1AppenderSkeleton"><td class="mdescLeft">&#160;</td><td class="mdescRight">The first filter in the filter chain. <a href="classlog4cxx_1_1AppenderSkeleton.html#a5069c2dcb5ae9f81a4277b5bc3ae078c">More...</a><br /></td></tr>
<tr class="separator:a5069c2dcb5ae9f81a4277b5bc3ae078c inherit pro_attribs_classlog4cxx_1_1AppenderSkeleton"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeeb507e1e155c8b33784c25c33df1aef inherit pro_attribs_classlog4cxx_1_1AppenderSkeleton"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacelog4cxx_1_1spi.html#a98940dd5338fd77ed3018e8ad9d5ac97">spi::FilterPtr</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#aeeb507e1e155c8b33784c25c33df1aef">tailFilter</a></td></tr>
<tr class="memdesc:aeeb507e1e155c8b33784c25c33df1aef inherit pro_attribs_classlog4cxx_1_1AppenderSkeleton"><td class="mdescLeft">&#160;</td><td class="mdescRight">The last filter in the filter chain. <a href="classlog4cxx_1_1AppenderSkeleton.html#aeeb507e1e155c8b33784c25c33df1aef">More...</a><br /></td></tr>
<tr class="separator:aeeb507e1e155c8b33784c25c33df1aef inherit pro_attribs_classlog4cxx_1_1AppenderSkeleton"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a26cc3a3b6c4ce8456a656680e9a3f6b3 inherit pro_attribs_classlog4cxx_1_1AppenderSkeleton"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#a26cc3a3b6c4ce8456a656680e9a3f6b3">closed</a></td></tr>
<tr class="memdesc:a26cc3a3b6c4ce8456a656680e9a3f6b3 inherit pro_attribs_classlog4cxx_1_1AppenderSkeleton"><td class="mdescLeft">&#160;</td><td class="mdescRight">Is this appender closed? <a href="classlog4cxx_1_1AppenderSkeleton.html#a26cc3a3b6c4ce8456a656680e9a3f6b3">More...</a><br /></td></tr>
<tr class="separator:a26cc3a3b6c4ce8456a656680e9a3f6b3 inherit pro_attribs_classlog4cxx_1_1AppenderSkeleton"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af83019f8dc57c1b55305e53fe0d5e993 inherit pro_attribs_classlog4cxx_1_1AppenderSkeleton"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classlog4cxx_1_1helpers_1_1Pool.html">log4cxx::helpers::Pool</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#af83019f8dc57c1b55305e53fe0d5e993">pool</a></td></tr>
<tr class="separator:af83019f8dc57c1b55305e53fe0d5e993 inherit pro_attribs_classlog4cxx_1_1AppenderSkeleton"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad6018c9f78a258ffb4b217b2e45b484d inherit pro_attribs_classlog4cxx_1_1AppenderSkeleton"><td class="memItemLeft" align="right" valign="top">std::recursive_mutex&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#ad6018c9f78a258ffb4b217b2e45b484d">mutex</a></td></tr>
<tr class="separator:ad6018c9f78a258ffb4b217b2e45b484d inherit pro_attribs_classlog4cxx_1_1AppenderSkeleton"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Sends <a class="el" href="classlog4cxx_1_1spi_1_1LoggingEvent.html">LoggingEvent</a> objects to a set of remote log servers, usually a SocketNode. </p>
<p>Acts just like <a class="el" href="classlog4cxx_1_1net_1_1SocketAppender.html" title="Sends LoggingEvent objects to a remote a log server, usually Apache Chainsaw. ">SocketAppender</a> except that instead of connecting to a given remote log server, <code><a class="el" href="classlog4cxx_1_1net_1_1SocketHubAppender.html" title="Sends LoggingEvent objects to a set of remote log servers, usually a SocketNode. ">SocketHubAppender</a></code> accepts connections from the remote log servers as clients. It can accept more than one connection. When a log event is received, the event is sent to the set of currently connected remote log servers. Implemented this way it does not require any update to the configuration file to send data to another remote log server. The remote log server simply connects to the host and port the <code><a class="el" href="classlog4cxx_1_1net_1_1SocketHubAppender.html" title="Sends LoggingEvent objects to a set of remote log servers, usually a SocketNode. ">SocketHubAppender</a></code> is running on.</p>
<p>The <code><a class="el" href="classlog4cxx_1_1net_1_1SocketHubAppender.html" title="Sends LoggingEvent objects to a set of remote log servers, usually a SocketNode. ">SocketHubAppender</a></code> does not store events such that the remote side will events that arrived after the establishment of its connection. Once connected, events arrive in order as guaranteed by the TCP protocol.</p>
<p>This implementation borrows heavily from the <a class="el" href="classlog4cxx_1_1net_1_1SocketAppender.html" title="Sends LoggingEvent objects to a remote a log server, usually Apache Chainsaw. ">SocketAppender</a>.</p>
<p>The <a class="el" href="classlog4cxx_1_1net_1_1SocketHubAppender.html" title="Sends LoggingEvent objects to a set of remote log servers, usually a SocketNode. ">SocketHubAppender</a> has the following characteristics:</p>
<ul>
<li>If sent to a SocketNode, logging is non-intrusive as far as the log event is concerned. In other words, the event will be logged with the same time stamp, <a class="el" href="classlog4cxx_1_1NDC.html" title="the ndc class implements nested diagnostic contexts as defined by neil harrison in the article &quot;patte...">NDC</a>, location info as if it were logged locally.</li>
<li><code><a class="el" href="classlog4cxx_1_1net_1_1SocketHubAppender.html" title="Sends LoggingEvent objects to a set of remote log servers, usually a SocketNode. ">SocketHubAppender</a></code> does not use a layout. It ships a serialized <a class="el" href="classlog4cxx_1_1spi_1_1LoggingEvent.html" title="The internal representation of logging events. ">spi::LoggingEvent</a> object to the remote side.</li>
<li><code><a class="el" href="classlog4cxx_1_1net_1_1SocketHubAppender.html" title="Sends LoggingEvent objects to a set of remote log servers, usually a SocketNode. ">SocketHubAppender</a></code> relies on the TCP protocol. Consequently, if the remote side is reachable, then log events will eventually arrive at remote client.</li>
<li>If no remote clients are attached, the logging requests are simply dropped.</li>
<li>Logging events are automatically <em>buffered</em> by the native TCP implementation. This means that if the link to remote client is slow but still faster than the rate of (log) event production, the application will not be affected by the slow network connection. However, if the network connection is slower then the rate of event production, then the local application can only progress at the network rate. In particular, if the network link to the the remote client is down, the application will be blocked. <br />
<br />
On the other hand, if the network link is up, but the remote client is down, the client will not be blocked when making log requests but the log events will be lost due to client unavailability. <br />
<br />
The single remote client case extends to multiple clients connections. The rate of logging will be determined by the slowest link.</li>
<li>If the application hosting the <code><a class="el" href="classlog4cxx_1_1net_1_1SocketHubAppender.html" title="Sends LoggingEvent objects to a set of remote log servers, usually a SocketNode. ">SocketHubAppender</a></code> exits before the <code><a class="el" href="classlog4cxx_1_1net_1_1SocketHubAppender.html" title="Sends LoggingEvent objects to a set of remote log servers, usually a SocketNode. ">SocketHubAppender</a></code> is closed either explicitly or subsequent to garbage collection, then there might be untransmitted data in the pipe which might be lost. This is a common problem on Windows based systems. <br />
<br />
To avoid lost data, it is usually sufficient to <a class="el" href="classlog4cxx_1_1net_1_1SocketHubAppender.html#a57721f7fc85bc133561eca66f19cc83c" title="Release any resources allocated within the appender such as file handles, network connections...">close</a> the <code><a class="el" href="classlog4cxx_1_1net_1_1SocketHubAppender.html" title="Sends LoggingEvent objects to a set of remote log servers, usually a SocketNode. ">SocketHubAppender</a></code> either explicitly or by calling the <a class="el" href="classlog4cxx_1_1LogManager.html#ad8845f4e8c6c840c7825bde2c9ce7e7c" title="Safely close and remove all appenders in all loggers including the root logger. ">LogManager::shutdown</a> method before exiting the application. </li>
</ul>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a8d6f2f3d5cc1e2d71a0fece8de5a9ec4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a8d6f2f3d5cc1e2d71a0fece8de5a9ec4">&#9670;&nbsp;</a></span>SocketHubAppender() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">log4cxx::net::SocketHubAppender::SocketHubAppender </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a6bc6d48e9604ea8c73facf3bdeb38ef0"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6bc6d48e9604ea8c73facf3bdeb38ef0">&#9670;&nbsp;</a></span>~SocketHubAppender()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">log4cxx::net::SocketHubAppender::~SocketHubAppender </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a1c916bc1174dd4c43e3f3d646b59aa0f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a1c916bc1174dd4c43e3f3d646b59aa0f">&#9670;&nbsp;</a></span>SocketHubAppender() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">log4cxx::net::SocketHubAppender::SocketHubAppender </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>port</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Connects to remote server at <code>address</code> and <code>port</code>. </p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="acf038878038026f2bbe6f23c46189df2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acf038878038026f2bbe6f23c46189df2">&#9670;&nbsp;</a></span>activateOptions()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void log4cxx::net::SocketHubAppender::activateOptions </td>
<td>(</td>
<td class="paramtype"><a class="el" href="classlog4cxx_1_1helpers_1_1Pool.html">log4cxx::helpers::Pool</a> &amp;&#160;</td>
<td class="paramname"><em>p</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Set up the socket server on the specified port. </p>
<p>Reimplemented from <a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#a7e2e696883dc8815faff3c197bbce526">log4cxx::AppenderSkeleton</a>.</p>
</div>
</div>
<a id="ac75701ec048a40ef3ac83a8c8dc3475e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac75701ec048a40ef3ac83a8c8dc3475e">&#9670;&nbsp;</a></span>append()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void log4cxx::net::SocketHubAppender::append </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="namespacelog4cxx_1_1spi.html#aae6992e1b33222c26bdc1173b6aedc6c">spi::LoggingEventPtr</a> &amp;&#160;</td>
<td class="paramname"><em>event</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype"><a class="el" href="classlog4cxx_1_1helpers_1_1Pool.html">log4cxx::helpers::Pool</a> &amp;&#160;</td>
<td class="paramname"><em>p</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Append an event to all of current connections. </p>
<p>Implements <a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#a2e8b992ffcb778c67b4cb0ed694ab21c">log4cxx::AppenderSkeleton</a>.</p>
</div>
</div>
<a id="a57721f7fc85bc133561eca66f19cc83c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a57721f7fc85bc133561eca66f19cc83c">&#9670;&nbsp;</a></span>close()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void log4cxx::net::SocketHubAppender::close </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Release any resources allocated within the appender such as file handles, network connections, etc. </p>
<p>It is a programming error to append to a closed appender. </p>
<p>Implements <a class="el" href="classlog4cxx_1_1Appender.html#a63bbe5d72b11d0fcbbb4d06d435a7012">log4cxx::Appender</a>.</p>
</div>
</div>
<a id="a64c38e9eda184c97e16e4e053ada5998"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a64c38e9eda184c97e16e4e053ada5998">&#9670;&nbsp;</a></span>getLocationInfo()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">bool log4cxx::net::SocketHubAppender::getLocationInfo </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns value of the <b>LocationInfo</b> option. </p>
</div>
</div>
<a id="a37a63d79ab94b04528b66617fdb59712"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a37a63d79ab94b04528b66617fdb59712">&#9670;&nbsp;</a></span>getPort()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">int log4cxx::net::SocketHubAppender::getPort </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Returns value of the <b>Port</b> option. </p>
</div>
</div>
<a id="a2b788c4eb7b92b839c779a0a3f01e687"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2b788c4eb7b92b839c779a0a3f01e687">&#9670;&nbsp;</a></span>requiresLayout()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual bool log4cxx::net::SocketHubAppender::requiresLayout </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>The <a class="el" href="classlog4cxx_1_1net_1_1SocketHubAppender.html" title="Sends LoggingEvent objects to a set of remote log servers, usually a SocketNode. ">SocketHubAppender</a> does not use a layout. </p>
<p>Hence, this method returns <code>false</code>. </p>
<p>Implements <a class="el" href="classlog4cxx_1_1Appender.html#a59cf35c2fb097cce8ca435d2141790d9">log4cxx::Appender</a>.</p>
</div>
</div>
<a id="a2711afc4f0fd148c69dd5670b1ed376f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2711afc4f0fd148c69dd5670b1ed376f">&#9670;&nbsp;</a></span>setLocationInfo()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void log4cxx::net::SocketHubAppender::setLocationInfo </td>
<td>(</td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>locationInfo1</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>The <b>LocationInfo</b> option takes a boolean value. </p>
<p>If true, the information sent to the remote host will include location information. By default no location information is sent to the server. </p>
</div>
</div>
<a id="a92245217aef3820ed4ab500481be3848"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a92245217aef3820ed4ab500481be3848">&#9670;&nbsp;</a></span>setOption()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void log4cxx::net::SocketHubAppender::setOption </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="namespacelog4cxx.html#aa2308ed05fef2a1366066cb38b177e94">LogString</a> &amp;&#160;</td>
<td class="paramname"><em>option</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const <a class="el" href="namespacelog4cxx.html#aa2308ed05fef2a1366066cb38b177e94">LogString</a> &amp;&#160;</td>
<td class="paramname"><em>value</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Set options. </p>
<p>Reimplemented from <a class="el" href="classlog4cxx_1_1AppenderSkeleton.html#a2222217d1dba5d3fa5db8decee7c6104">log4cxx::AppenderSkeleton</a>.</p>
</div>
</div>
<a id="a56a8e1d11bc267883b397cdf479af168"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a56a8e1d11bc267883b397cdf479af168">&#9670;&nbsp;</a></span>setPort()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void log4cxx::net::SocketHubAppender::setPort </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>port1</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>The <b>Port</b> option takes a positive integer representing the port where the server is waiting for connections. </p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="sockethubappender_8h_source.html">sockethubappender.h</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- HTML footer for doxygen 1.8.13-->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="namespacelog4cxx.html">log4cxx</a></li><li class="navelem"><a class="el" href="namespacelog4cxx_1_1net.html">net</a></li><li class="navelem"><a class="el" href="classlog4cxx_1_1net_1_1SocketHubAppender.html">SocketHubAppender</a></li>
<li class="footer">Generated by
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.13 </li>
<li class="center">
Copyright &copy; 2003-2022 <a href="https://www.apache.org/">Apache Software Foundation</a>. All Rights Reserved. <a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</a><br/>
Apache Logging, Apache Log4j, Log4j, Apache, the Apache feather logo, and the Apache Logging project logo are trademarks of The Apache Software Foundation.<br/>
</li>
</ul>
</div>
</body>
</html>