blob: ca521e639a855ce6fe6b72d4a06b1269c9be6f29 [file] [log] [blame]
<html xmlns:MSHelp="http://msdn.microsoft.com/mshelp" xmlns:mshelp="http://msdn.microsoft.com/mshelp"><head><link rel="SHORTCUT ICON" href="./../icons/favicon.ico" /><style type="text/css">.OH_CodeSnippetContainerTabLeftActive, .OH_CodeSnippetContainerTabLeft,.OH_CodeSnippetContainerTabLeftDisabled { backgroundImageName: tabLeftBG.gif; }.OH_CodeSnippetContainerTabRightActive, .OH_CodeSnippetContainerTabRight,.OH_CodeSnippetContainerTabRightDisabled { backgroundImageName: tabRightBG.gif; }.OH_footer { backgroundImageName: footer_slice.gif; background-position: top; background-repeat: repeat-x; }</style><link rel="stylesheet" type="text/css" href="./../styles/branding.css" /><link rel="stylesheet" type="text/css" href="./../styles/branding-en-US.css" /><style type="text/css">
body
{
border-left:5px solid #e6e6e6;
overflow-x:scroll;
overflow-y:scroll;
}
</style><script src="./../scripts/branding.js" type="text/javascript"><!----></script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>RemotingAppender Class</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="RemotingAppender class" /><meta name="System.Keywords" content="log4net.Appender.RemotingAppender class" /><meta name="System.Keywords" content="RemotingAppender class, about RemotingAppender class" /><meta name="Microsoft.Help.F1" content="log4net.Appender.RemotingAppender" /><meta name="Microsoft.Help.Id" content="T:log4net.Appender.RemotingAppender" /><meta name="Description" content="Delivers logging events to a remote logging sink." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="'true'" /><meta name="container" content="log4net.Appender" /><meta name="file" content="T_log4net_Appender_RemotingAppender" /><meta name="guid" content="T_log4net_Appender_RemotingAppender" /><link type="text/css" rel="stylesheet" href="ms-help://Hx/HxRuntime/HxLink.css" /><meta name="SelfBranded" content="true" /></head><body onload="onLoad()" class="primary-mtps-offline-document"><div class="OH_outerDiv"><div class="OH_outerContent"><table class="TitleTable"><tr><td class="OH_tdTitleColumn">RemotingAppender Class</td><td class="OH_tdRunningTitleColumn">Apache log4net™ SDK Documentation</td></tr></table><div id="mainSection"><div id="mainBody"><span class="introStyle"></span><div class="summary">
Delivers logging events to a remote logging sink.
</div><div class="OH_CollapsibleAreaRegion"><div class="OH_regiontitle">Inheritance Hierarchy</div><div class="OH_CollapsibleArea_HrDiv"><hr class="OH_CollapsibleArea_Hr" /></div></div><div class="OH_clear"></div><img src="./../icons/online_icon.gif" class="OH_offlineIcon" alt="Online" title="Online" /><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="ID0EBKNAAAAA"> </span><script type="text/javascript">
addToLanSpecTextIdSet("ID0EBKNAAAAA?vb=.|cpp=::|cs=.|fs=.|nu=.");
</script>Object</a><br />  <a href="T_log4net_Appender_AppenderSkeleton.htm" target="">log4net.Appender<span id="ID0EBHNAAAAA"> </span><script type="text/javascript">
addToLanSpecTextIdSet("ID0EBHNAAAAA?vb=.|cpp=::|cs=.|fs=.|nu=.");
</script>AppenderSkeleton</a><br />    <a href="T_log4net_Appender_BufferingAppenderSkeleton.htm" target="">log4net.Appender<span id="ID0EBENAAAAA"> </span><script type="text/javascript">
addToLanSpecTextIdSet("ID0EBENAAAAA?vb=.|cpp=::|cs=.|fs=.|nu=.");
</script>BufferingAppenderSkeleton</a><br />      <span class="selflink">log4net.Appender<span id="ID0EBBNAAAAA"> </span><script type="text/javascript">
addToLanSpecTextIdSet("ID0EBBNAAAAA?vb=.|cpp=::|cs=.|fs=.|nu=.");
</script>RemotingAppender</span><br /><p></p><b>Namespace:</b> <a href="N_log4net_Appender.htm" target="">log4net.Appender</a><br /><b>Assembly:</b> <span sdata="assembly">log4net</span> (in log4net.dll) Version: 1.2.15.0 (1.2.15.0)<div class="OH_CollapsibleAreaRegion"><div class="OH_regiontitle">Syntax</div><div class="OH_CollapsibleArea_HrDiv"><hr class="OH_CollapsibleArea_Hr" /></div></div><div class="OH_clear"></div><div id="snippetGroup_Syntax" class="code"><div id="ID0ECADAAAAA" class="OH_CodeSnippetContainer"><div class="OH_CodeSnippetContainerTabs" id="ID0ECADAAAAA_tabs"><div class="OH_CodeSnippetContainerTabLeftActive" id="ID0ECADAAAAA_tabimgleft"></div><div id="ID0ECADAAAAA_tab1" class="OH_CodeSnippetContainerTabActive" EnableCopyCode="true"><a href="#" onclick="javascript:ChangeTab('ID0ECADAAAAA','C#','1','4');return false;">C#</a></div><div id="ID0ECADAAAAA_tab2" class="OH_CodeSnippetContainerTab" EnableCopyCode="true"><a href="#" onclick="javascript:ChangeTab('ID0ECADAAAAA','Visual Basic','2','4');return false;">VB</a></div><div id="ID0ECADAAAAA_tab3" class="OH_CodeSnippetContainerTab" EnableCopyCode="true"><a href="#" onclick="javascript:ChangeTab('ID0ECADAAAAA','Visual C++','3','4');return false;">C++</a></div><div id="ID0ECADAAAAA_tab4" class="OH_CodeSnippetContainerTabDisabledNotFirst" EnableCopyCode="true" disabled="true"><a>F#</a></div><div class="OH_CodeSnippetContainerTabRight" id="ID0ECADAAAAA_tabimgright"></div></div><div id="ID0ECADAAAAA_codecollection" class="OH_CodeSnippetContainerCodeCollection"><div class="OH_CodeSnippetToolBar"><div class="OH_CodeSnippetToolBarText"><a id="ID0ECADAAAAA_ViewColorized" href="#" onclick="javascript:ExchangeTitleContent('ID0ECADAAAAA','4')" title="View Colorized" style="display: none">View Colorized</a><a id="ID0ECADAAAAA_copycode" href="#" onclick="javascript:CopyToClipboard('ID0ECADAAAAA','4')" title="Copy to Clipboard">Copy to Clipboard</a><a id="ID0ECADAAAAA_PrintText" class="OH_PrintText" href="#" onclick="javascript:Print('ID0ECADAAAAA','4')" title="Print">Print</a></div></div><div id="ID0ECADAAAAA_code_Div1" class="OH_CodeSnippetContainerCode" style="display: block"><pre><span class="keyword">public</span> <span class="keyword">class</span> <span class="identifier">RemotingAppender</span> : <span class="identifier">BufferingAppenderSkeleton</span></pre></div><div id="ID0ECADAAAAA_code_Plain_Div1" class="OH_CodeSnippetContainerCode" style="display: none"><pre>public class RemotingAppender : BufferingAppenderSkeleton</pre></div><div id="ID0ECADAAAAA_code_Div2" class="OH_CodeSnippetContainerCode" style="display: none"><pre><span class="keyword">Public</span> <span class="keyword">Class</span> <span class="identifier">RemotingAppender</span> 
<span class="keyword">Inherits</span> <span class="identifier">BufferingAppenderSkeleton</span></pre></div><div id="ID0ECADAAAAA_code_Plain_Div2" class="OH_CodeSnippetContainerCode" style="display: none"><pre>Public Class RemotingAppender 
Inherits BufferingAppenderSkeleton</pre></div><div id="ID0ECADAAAAA_code_Div3" class="OH_CodeSnippetContainerCode" style="display: none"><pre><span class="keyword">public</span> <span class="keyword">ref class</span> <span class="identifier">RemotingAppender</span> : <span class="keyword">public</span> <span class="identifier">BufferingAppenderSkeleton</span></pre></div><div id="ID0ECADAAAAA_code_Plain_Div3" class="OH_CodeSnippetContainerCode" style="display: none"><pre>public ref class RemotingAppender : public BufferingAppenderSkeleton</pre></div><div id="ID0ECADAAAAA_code_Div4" class="OH_CodeSnippetContainerCode" style="display: none"><pre /></div><div id="ID0ECADAAAAA_code_Plain_Div4" class="OH_CodeSnippetContainerCode" style="display: none"><pre /></div></div></div><script>addSpecificTextLanguageTagSet('ID0ECADAAAAA');</script></div><div class="OH_CollapsibleAreaRegion"><div class="OH_regiontitle">Remarks</div><div class="OH_CollapsibleArea_HrDiv"><hr class="OH_CollapsibleArea_Hr" /></div></div><div class="OH_clear"></div><p>
This Appender is designed to deliver events to a remote sink.
That is any object that implements the <a href="T_log4net_Appender_RemotingAppender_IRemoteLoggingSink.htm" target="">RemotingAppender<span id="ID0EBDECAAAAA"> </span><script type="text/javascript">
addToLanSpecTextIdSet("ID0EBDECAAAAA?vb=.|cpp=::|cs=.|fs=.|nu=.");
</script>IRemoteLoggingSink</a>
interface. It delivers the events using .NET remoting. The
object to deliver events to is specified by setting the
appenders <a href="P_log4net_Appender_RemotingAppender_Sink.htm" target="">Sink</a> property.</p><p>
The RemotingAppender buffers events before sending them. This allows it to
make more efficient use of the remoting infrastructure.</p><p>
Once the buffer is full the events are still not sent immediately.
They are scheduled to be sent using a pool thread. The effect is that
the send occurs asynchronously. This is very important for a
number of non obvious reasons. The remoting infrastructure will
flow thread local variables (stored in the <img src="./../icons/online_icon.gif" class="OH_offlineIcon" alt="Online" title="Online" /><a href="http://msdn2.microsoft.com/en-us/library/c9tkcy8b" target="_blank">CallContext</a>),
if they are marked as <img src="./../icons/online_icon.gif" class="OH_offlineIcon" alt="Online" title="Online" /><a href="http://msdn2.microsoft.com/en-us/library/39fsck47" target="_blank">ILogicalThreadAffinative</a>, across the
remoting boundary. If the server is not contactable then
the remoting infrastructure will clear the <img src="./../icons/online_icon.gif" class="OH_offlineIcon" alt="Online" title="Online" /><a href="http://msdn2.microsoft.com/en-us/library/39fsck47" target="_blank">ILogicalThreadAffinative</a>
objects from the <img src="./../icons/online_icon.gif" class="OH_offlineIcon" alt="Online" title="Online" /><a href="http://msdn2.microsoft.com/en-us/library/c9tkcy8b" target="_blank">CallContext</a>. To prevent a logging failure from
having side effects on the calling application the remoting call must be made
from a separate thread to the one used by the application. A <img src="./../icons/online_icon.gif" class="OH_offlineIcon" alt="Online" title="Online" /><a href="http://msdn2.microsoft.com/en-us/library/y5htx827" target="_blank">ThreadPool</a>
thread is used for this. If no <img src="./../icons/online_icon.gif" class="OH_offlineIcon" alt="Online" title="Online" /><a href="http://msdn2.microsoft.com/en-us/library/y5htx827" target="_blank">ThreadPool</a> thread is available then
the events will block in the thread pool manager until a thread is available.</p><p>
Because the events are sent asynchronously using pool threads it is possible to close
this appender before all the queued events have been sent.
When closing the appender attempts to wait until all the queued events have been sent, but
this will timeout after 30 seconds regardless.</p><p>
If this appender is being closed because the <img src="./../icons/online_icon.gif" class="OH_offlineIcon" alt="Online" title="Online" /><a href="http://msdn2.microsoft.com/en-us/library/k8xz23w3" target="_blank">ProcessExit</a>
event has fired it may not be possible to send all the queued events. During process
exit the runtime limits the time that a <img src="./../icons/online_icon.gif" class="OH_offlineIcon" alt="Online" title="Online" /><a href="http://msdn2.microsoft.com/en-us/library/k8xz23w3" target="_blank">ProcessExit</a>
event handler is allowed to run for. If the runtime terminates the threads before
the queued events have been sent then they will be lost. To ensure that all events
are sent the appender must be closed before the application exits. See
<a href="M_log4net_Core_LoggerManager_Shutdown.htm" target="">Shutdown<span id="ID0EABACAAAAA"> </span><script type="text/javascript">
addToLanSpecTextIdSet("ID0EABACAAAAA?vb=|cpp=()|cs=()|fs=()|nu=()");
</script></a> for details on how to shutdown
log4net programmatically.</p><a name="seeAlsoSection"><!----></a><div class="OH_CollapsibleAreaRegion"><div class="OH_regiontitle">See Also</div><div class="OH_CollapsibleArea_HrDiv"><hr class="OH_CollapsibleArea_Hr" /></div></div><div class="OH_clear"></div><div class="seeAlsoStyle"><a href="AllMembers_T_log4net_Appender_RemotingAppender.htm" target="">RemotingAppender Members</a></div><div class="seeAlsoStyle"><a href="N_log4net_Appender.htm" target="">log4net.Appender Namespace</a></div><div class="seeAlsoStyle"><a href="T_log4net_Appender_RemotingAppender_IRemoteLoggingSink.htm" target="">log4net.Appender<span id="ID0EDAAAAAAAA"> </span><script type="text/javascript">
addToLanSpecTextIdSet("ID0EDAAAAAAAA?vb=.|cpp=::|cs=.|fs=.|nu=.");
</script>RemotingAppender<span id="ID0EBAAAAAAAA"> </span><script type="text/javascript">
addToLanSpecTextIdSet("ID0EBAAAAAAAA?vb=.|cpp=::|cs=.|fs=.|nu=.");
</script>IRemoteLoggingSink</a></div></div></div></div></div><div id="OH_footer" class="OH_footer"><p>Apache log4net, Apache and log4net are trademarks of The Apache Software Foundation.</p><p><a href="http://logging.apache.org/log4net/" target="_blank"><img src="./../icons/online_icon.gif" class="OH_offlineIcon" alt="Online" title="Online" /> 
Copyright 2004-2015 The Apache Software Foundation (http://logging.apache.org/log4net/)</a></p><div class="OH_feedbacklink"><a href="mailto:http://logging.apache.org/log4net/mail-lists.html?subject=Apache+log4net%e2%84%a2+SDK+Documentation+RemotingAppender+Class+100+EN-US&amp;body=Your%20feedback%20is%20used%20to%20improve%20the%20documentation%20and%20the%20product.%20Your%20e-mail%20address%20will%20not%20be%20used%20for%20any%20other%20purpose%20and%20is%20disposed%20of%20after%20the%20issue%20you%20report%20is%20resolved.%20While%20working%20to%20resolve%20the%20issue%20that%20you%20report%2c%20you%20may%20be%20contacted%20via%20e-mail%20to%20get%20further%20details%20or%20clarification%20on%20the%20feedback%20you%20sent.%20After%20the%20issue%20you%20report%20has%20been%20addressed%2c%20you%20may%20receive%20an%20e-mail%20to%20let%20you%20know%20that%20your%20feedback%20has%20been%20addressed.">Send Feedback</a> on this topic to http://logging.apache.org/log4net/mail-lists.html.</div></div></body></html>