blob: 0bed554b42a62b26da68cd1dc6a5c1f1d6dd9288 [file] [log] [blame]
<html><head><meta http-equiv="X-UA-Compatible" content="IE=edge" /><link rel="shortcut icon" href="../icons/favicon.ico" /><style type="text/css">.OH_CodeSnippetContainerTabLeftActive, .OH_CodeSnippetContainerTabLeft,.OH_CodeSnippetContainerTabLeftDisabled { }.OH_CodeSnippetContainerTabRightActive, .OH_CodeSnippetContainerTabRight,.OH_CodeSnippetContainerTabRightDisabled { }.OH_footer { }</style><link rel="stylesheet" type="text/css" href="../styles/branding.css" /><link rel="stylesheet" type="text/css" href="../styles/branding-en-US.css" /><script type="text/javascript" src="../scripts/branding.js"> </script><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>LogicalThreadContext Class</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="LogicalThreadContext class" /><meta name="System.Keywords" content="log4net.LogicalThreadContext class" /><meta name="System.Keywords" content="LogicalThreadContext class, about LogicalThreadContext class" /><meta name="Microsoft.Help.F1" content="log4net.LogicalThreadContext" /><meta name="Microsoft.Help.Id" content="T:log4net.LogicalThreadContext" /><meta name="Description" content="The log4net Logical Thread Context." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="log4net" /><meta name="file" content="T_log4net_LogicalThreadContext" /><meta name="guid" content="T_log4net_LogicalThreadContext" /><link type="text/css" rel="stylesheet" href="../styles/highlight.css" /><script type="text/javascript" src="../scripts/highlight.js"> </script></head><body onload="OnLoad('cs')"><input type="hidden" id="userDataCache" class="userDataStyle" /><div class="OH_outerDiv"><div class="OH_outerContent"><table class="TitleTable"><tr><td class="OH_tdTitleColumn">LogicalThreadContext 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">
The log4net Logical Thread Context.
</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><a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">System<span id="LST7E3295ED_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST7E3295ED_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><br />  <span class="selflink">log4net<span id="LST7E3295ED_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST7E3295ED_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>LogicalThreadContext</span><br /><p> </p><strong>Namespace:</strong> <a href="N_log4net.htm">log4net</a><br /><strong>Assembly:</strong> log4net (in log4net.dll) Version: 2.0.8.0-.NET 4.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 class="OH_CodeSnippetContainer"><div class="OH_CodeSnippetContainerTabs"><div class="OH_CodeSnippetContainerTabLeft" id="ID0EDCA_tabimgleft"> </div><div id="ID0EDCA_tab1" class="OH_CodeSnippetContainerTabFirst"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cs','1','4');return false;">C#</a></div><div id="ID0EDCA_tab2" class="OH_CodeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','vb','2','4');return false;">VB</a></div><div id="ID0EDCA_tab3" class="OH_CodeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','cpp','3','4');return false;">C++</a></div><div id="ID0EDCA_tab4" class="OH_CodeSnippetContainerTab"><a href="#" onclick="javascript:ChangeTab('ID0EDCA','fs','4','4');return false;">F#</a></div><div class="OH_CodeSnippetContainerTabRight" id="ID0EDCA_tabimgright"> </div></div><div class="OH_CodeSnippetContainerCodeCollection"><div class="OH_CodeSnippetToolBar"><div class="OH_CodeSnippetToolBarText"><a id="ID0EDCA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EDCA');return false;" title="Copy">Copy</a></div></div><div id="ID0EDCA_code_Div1" class="OH_CodeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">sealed</span> <span class="keyword">class</span> <span class="identifier">LogicalThreadContext</span></pre></div><div id="ID0EDCA_code_Div2" class="OH_CodeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">Public</span> <span class="keyword">NotInheritable</span> <span class="keyword">Class</span> <span class="identifier">LogicalThreadContext</span></pre></div><div id="ID0EDCA_code_Div3" class="OH_CodeSnippetContainerCode" style="display: none"><pre xml:space="preserve"><span class="keyword">public</span> <span class="keyword">ref class</span> <span class="identifier">LogicalThreadContext</span> <span class="keyword">sealed</span></pre></div><div id="ID0EDCA_code_Div4" class="OH_CodeSnippetContainerCode" style="display: none"><pre xml:space="preserve">[&lt;<span class="identifier">SealedAttribute</span>&gt;]
<span class="keyword">type</span> <span class="identifier">LogicalThreadContext</span> = <span class="keyword">class</span> <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><p>The <span class="selflink">LogicalThreadContext</span> type exposes the following members.</p><div class="OH_CollapsibleAreaRegion"><div class="OH_regiontitle">Properties</div><div class="OH_CollapsibleArea_HrDiv"><hr class="OH_CollapsibleArea_Hr" /></div></div><div class="OH_clear"> </div><table id="memberList" class="members"><tr><th class="ps_iconColumn">
 
</th><th>Name</th><th>Description</th></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="P_log4net_LogicalThreadContext_Properties.htm">Properties</a></td><td><div class="summary">
The thread properties map
</div></td></tr><tr data="public;static;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /><img src="../icons/static.gif" alt="Static member" title="Static member" /></td><td><a href="P_log4net_LogicalThreadContext_Stacks.htm">Stacks</a></td><td><div class="summary">
The thread stacks
</div></td></tr></table><a href="#mainBody">Top</a><div class="OH_CollapsibleAreaRegion"><div class="OH_regiontitle">Methods</div><div class="OH_CollapsibleArea_HrDiv"><hr class="OH_CollapsibleArea_Hr" /></div></div><div class="OH_clear"> </div><table id="memberList" class="members"><tr><th class="ps_iconColumn">
 
</th><th>Name</th><th>Description</th></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/bsc2ak47" target="_blank">Equals</a></td><td><div class="summary">
Determines whether the specified <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a> is equal to the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.
</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/zdee4b3y" target="_blank">GetHashCode</a></td><td><div class="summary">
Serves as a hash function for a particular type.
</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/dfwy45w9" target="_blank">GetType</a></td><td><div class="summary">
Gets the <a href="http://msdn2.microsoft.com/en-us/library/42892f65" target="_blank">Type</a> of the current instance.
</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/7bxwbwt2" target="_blank">ToString</a></td><td><div class="summary">
Returns a <a href="http://msdn2.microsoft.com/en-us/library/s1wwdcbf" target="_blank">String</a> that represents the current <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.
</div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a>.)</td></tr></table><a href="#mainBody">Top</a><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>
The <span class="code">LogicalThreadContext</span> provides a location for <a href="http://msdn2.microsoft.com/en-us/library/c9tkcy8b" target="_blank">CallContext</a> specific debugging
information to be stored.
The <span class="code">LogicalThreadContext</span> properties override any <a href="T_log4net_ThreadContext.htm">ThreadContext</a> or <a href="T_log4net_GlobalContext.htm">GlobalContext</a>
properties with the same name.
</p><p>
For .NET Standard 1.3 this class uses
System.Threading.AsyncLocal rather than <a href="http://msdn2.microsoft.com/en-us/library/c9tkcy8b" target="_blank">CallContext</a>.
</p><p>
The Logical Thread Context has a properties map and a stack.
The properties and stack can
be included in the output of log messages. The <a href="T_log4net_Layout_PatternLayout.htm">PatternLayout</a>
supports selecting and outputting these properties.
</p><p>
The Logical Thread Context provides a diagnostic context for the current call context.
This is an instrument for distinguishing interleaved log
output from different sources. Log output is typically interleaved
when a server handles multiple clients near-simultaneously.
</p><p>
The Logical Thread Context is managed on a per <a href="http://msdn2.microsoft.com/en-us/library/c9tkcy8b" target="_blank">CallContext</a> basis.
</p><p>
The <a href="http://msdn2.microsoft.com/en-us/library/c9tkcy8b" target="_blank">CallContext</a> requires a link time
<a href="http://msdn2.microsoft.com/en-us/library/k820e6k8" target="_blank">SecurityPermission</a> for the
<a href="http://msdn2.microsoft.com/en-us/library/xc5yzfbx" target="_blank">Infrastructure</a>.
If the calling code does not have this permission then this context will be disabled.
It will not store any property values set on it.
</p><div class="OH_CollapsibleAreaRegion"><div class="OH_regiontitle">Examples</div><div class="OH_CollapsibleArea_HrDiv"><hr class="OH_CollapsibleArea_Hr" /></div></div><div class="OH_clear"> </div>Example of using the thread context properties to store a username.
<div class="OH_CodeSnippetContainer"><div class="OH_CodeSnippetContainerTabs"><div class="OH_CodeSnippetContainerTabLeftActive" id="ID0EAADBA_tabimgleft"> </div><div id="ID0EAADBA_tab1" class="OH_CodeSnippetContainerTabSolo">C#</div><div class="OH_CodeSnippetContainerTabRightActive" id="ID0EAADBA_tabimgright"> </div></div><div class="OH_CodeSnippetContainerCodeCollection"><div class="OH_CodeSnippetToolBar"><div class="OH_CodeSnippetToolBarText"><a id="ID0EAADBA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EAADBA');return false;" title="Copy">Copy</a></div></div><div id="ID0EAADBA_code_Div1" class="OH_CodeSnippetContainerCode" style="display: block"><pre xml:space="preserve">LogicalThreadContext.Properties[<span class="highlight-literal">"user"</span>] = userName;
log.Info(<span class="highlight-literal">"This log message has a LogicalThreadContext Property called 'user'"</span>);</pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EAADBA");</script><div class="OH_CollapsibleAreaRegion"><div class="OH_regiontitle">Examples</div><div class="OH_CollapsibleArea_HrDiv"><hr class="OH_CollapsibleArea_Hr" /></div></div><div class="OH_clear"> </div>Example of how to push a message into the context stack
<div class="OH_CodeSnippetContainer"><div class="OH_CodeSnippetContainerTabs"><div class="OH_CodeSnippetContainerTabLeftActive" id="ID0EAACBA_tabimgleft"> </div><div id="ID0EAACBA_tab1" class="OH_CodeSnippetContainerTabSolo">C#</div><div class="OH_CodeSnippetContainerTabRightActive" id="ID0EAACBA_tabimgright"> </div></div><div class="OH_CodeSnippetContainerCodeCollection"><div class="OH_CodeSnippetToolBar"><div class="OH_CodeSnippetToolBarText"><a id="ID0EAACBA_copyCode" href="#" onclick="javascript:CopyToClipboard('ID0EAACBA');return false;" title="Copy">Copy</a></div></div><div id="ID0EAACBA_code_Div1" class="OH_CodeSnippetContainerCode" style="display: block"><pre xml:space="preserve"><span class="highlight-keyword">using</span>(LogicalThreadContext.Stacks[<span class="highlight-literal">"LDC"</span>].Push(<span class="highlight-literal">"my context message"</span>))
{
log.Info(<span class="highlight-literal">"This log message has a LogicalThreadContext Stack message that includes 'my context message'"</span>);
} <span class="highlight-comment">// at the end of the using block the message is automatically popped</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EAACBA");</script><div class="OH_CollapsibleAreaRegion"><div class="OH_regiontitle">Thread Safety</div><div class="OH_CollapsibleArea_HrDiv"><hr class="OH_CollapsibleArea_Hr" /></div></div><div class="OH_clear"> </div>Static members of this type are safe for multi-threaded operations. Instance members of this type are safe for multi-threaded operations. <div class="OH_CollapsibleAreaRegion" id="seeAlsoSection"><div class="OH_regiontitle">See Also</div><div class="OH_CollapsibleArea_HrDiv"><hr class="OH_CollapsibleArea_Hr" /></div></div><div class="OH_clear"> </div><h4 class="subHeading">Reference</h4><div class="seeAlsoStyle"><a href="N_log4net.htm">log4net Namespace</a></div></div></div></div></div><div id="OH_footer" class="OH_footer">Apache log4net, Apache and log4net are trademarks of The Apache Software Foundation.<p><a href="http://logging.apache.org/log4net/" target="_blank">Copyright 2004-2017 The Apache Software Foundation</a></p><div class="OH_feedbacklink">Send comments on this topic to
<a id="HT_MailLink" href="mailto:http%3A%2F%2Flogging.apache.org%2Flog4net%2Fmail-lists.html?Subject=Apache log4net™ SDK Documentation">http://logging.apache.org/log4net/mail-lists.html</a></div><script type="text/javascript">
var HT_mailLink = document.getElementById("HT_MailLink");
var HT_mailLinkText = HT_mailLink.innerHTML;
HT_mailLink.href += ": " + document.title + "\u0026body=" + encodeURIComponent("Your feedback is used to improve the documentation and the product. Your e-mail address will not be used for any other purpose and is disposed of after the issue you report is resolved. While working to resolve the issue that you report, you may be contacted via e-mail to get further details or clarification on the feedback you sent. After the issue you report has been addressed, you may receive an e-mail to let you know that your feedback has been addressed.");
HT_mailLink.innerHTML = HT_mailLinkText;
</script> </div></body></html>