﻿<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>log4net.Core Namespace</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="log4net.Core namespace" /><meta name="Microsoft.Help.F1" content="log4net.Core" /><meta name="Microsoft.Help.Id" content="N:log4net.Core" /><meta name="Description" content=" " /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="log4net.Core" /><meta name="file" content="N_log4net_Core" /><meta name="guid" content="N_log4net_Core" /></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">log4net.Core Namespace</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"> </div><div class="OH_CollapsibleAreaRegion"><div class="OH_regiontitle">Classes</div><div class="OH_CollapsibleArea_HrDiv"><hr class="OH_CollapsibleArea_Hr" /></div></div><div class="OH_clear"> </div><table id="typeList" class="members"><tr><th class="ps_iconColumn">
					 
				</th><th>Class</th><th>Description</th></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_log4net_Core_CompactRepositorySelector.htm">CompactRepositorySelector</a></td><td><div class="summary">
            The implementation of the <a href="T_log4net_Core_IRepositorySelector.htm">IRepositorySelector</a> interface suitable
            for use with the compact framework
            </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_log4net_Core_DefaultRepositorySelector.htm">DefaultRepositorySelector</a></td><td><div class="summary">
            The default implementation of the <a href="T_log4net_Core_IRepositorySelector.htm">IRepositorySelector</a> interface.
            </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_log4net_Core_ExceptionEvaluator.htm">ExceptionEvaluator</a></td><td><div class="summary">
            An evaluator that triggers on an Exception type
            </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_log4net_Core_Level.htm">Level</a></td><td><div class="summary">
            Defines the default set of levels recognized by the system.
            </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_log4net_Core_LevelCollection.htm">LevelCollection</a></td><td><div class="summary">
            A strongly-typed collection of <a href="T_log4net_Core_Level.htm">Level</a> objects.
            </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_log4net_Core_LevelEvaluator.htm">LevelEvaluator</a></td><td><div class="summary">
            An evaluator that triggers at a threshold level
            </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_log4net_Core_LevelMap.htm">LevelMap</a></td><td><div class="summary">
            Mapping between string name and Level object
            </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_log4net_Core_LocationInfo.htm">LocationInfo</a></td><td><div class="summary">
            The internal representation of caller location information.
            </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_log4net_Core_LogException.htm">LogException</a></td><td><div class="summary">
            Exception base type for log4net.
            </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_log4net_Core_LoggerManager.htm">LoggerManager</a></td><td><div class="summary">
            Static manager that controls the creation of repositories
            </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_log4net_Core_LoggerRepositoryCreationEventArgs.htm">LoggerRepositoryCreationEventArgs</a></td><td><div class="summary">
            Provides data for the <a href="E_log4net_Core_IRepositorySelector_LoggerRepositoryCreatedEvent.htm">LoggerRepositoryCreatedEvent</a> event.
            </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_log4net_Core_LoggerWrapperImpl.htm">LoggerWrapperImpl</a></td><td><div class="summary">
            Implementation of the <a href="T_log4net_Core_ILoggerWrapper.htm">ILoggerWrapper</a> interface.
            </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_log4net_Core_LoggingEvent.htm">LoggingEvent</a></td><td><div class="summary">
            The internal representation of logging events. 
            </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_log4net_Core_LogImpl.htm">LogImpl</a></td><td><div class="summary">
            Implementation of <a href="T_log4net_ILog.htm">ILog</a> wrapper interface.
            </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_log4net_Core_MethodItem.htm">MethodItem</a></td><td><div class="summary">
            provides method information without actually referencing a System.Reflection.MethodBase
            as that would require that the containing assembly is loaded.
            </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_log4net_Core_SecurityContext.htm">SecurityContext</a></td><td><div class="summary">
            A SecurityContext used by log4net when interacting with protected resources
            </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_log4net_Core_SecurityContextProvider.htm">SecurityContextProvider</a></td><td><div class="summary">
            The <a href="T_log4net_Core_SecurityContextProvider.htm">SecurityContextProvider</a> providers default <a href="T_log4net_Core_SecurityContext.htm">SecurityContext</a> instances.
            </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_log4net_Core_StackFrameItem.htm">StackFrameItem</a></td><td><div class="summary">
            provides stack frame information without actually referencing a System.Diagnostics.StackFrame
            as that would require that the containing assembly is loaded.
            </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_log4net_Core_TimeEvaluator.htm">TimeEvaluator</a></td><td><div class="summary">
            An evaluator that triggers after specified number of seconds.
            </div></td></tr><tr data="class; public"><td><img src="../icons/pubclass.gif" alt="Public class" title="Public class" /></td><td><a href="T_log4net_Core_WrapperMap.htm">WrapperMap</a></td><td><div class="summary">
            Maps between logger objects and wrapper objects.
            </div></td></tr></table><div class="OH_CollapsibleAreaRegion"><div class="OH_regiontitle">Structures</div><div class="OH_CollapsibleArea_HrDiv"><hr class="OH_CollapsibleArea_Hr" /></div></div><div class="OH_clear"> </div><table id="typeList" class="members"><tr><th class="ps_iconColumn">
					 
				</th><th>Structure</th><th>Description</th></tr><tr data="structure; public"><td><img src="../icons/pubstructure.gif" alt="Public structure" title="Public structure" /></td><td><a href="T_log4net_Core_LoggingEventData.htm">LoggingEventData</a></td><td><div class="summary">
            Portable data structure used by <a href="T_log4net_Core_LoggingEvent.htm">LoggingEvent</a></div></td></tr></table><div class="OH_CollapsibleAreaRegion"><div class="OH_regiontitle">Interfaces</div><div class="OH_CollapsibleArea_HrDiv"><hr class="OH_CollapsibleArea_Hr" /></div></div><div class="OH_clear"> </div><table id="typeList" class="members"><tr><th class="ps_iconColumn">
					 
				</th><th>Interface</th><th>Description</th></tr><tr data="interface; public"><td><img src="../icons/pubinterface.gif" alt="Public interface" title="Public interface" /></td><td><a href="T_log4net_Core_IAppenderAttachable.htm">IAppenderAttachable</a></td><td><div class="summary">
            Interface for attaching appenders to objects.
            </div></td></tr><tr data="interface; public"><td><img src="../icons/pubinterface.gif" alt="Public interface" title="Public interface" /></td><td><a href="T_log4net_Core_IErrorHandler.htm">IErrorHandler</a></td><td><div class="summary">
            Appenders may delegate their error handling to an <a href="T_log4net_Core_IErrorHandler.htm">IErrorHandler</a>.
            </div></td></tr><tr data="interface; public"><td><img src="../icons/pubinterface.gif" alt="Public interface" title="Public interface" /></td><td><a href="T_log4net_Core_IFixingRequired.htm">IFixingRequired</a></td><td><div class="summary">
            Interface for objects that require fixing.
            </div></td></tr><tr data="interface; public"><td><img src="../icons/pubinterface.gif" alt="Public interface" title="Public interface" /></td><td><a href="T_log4net_Core_ILogger.htm">ILogger</a></td><td><div class="summary">
            Interface that all loggers implement
            </div></td></tr><tr data="interface; public"><td><img src="../icons/pubinterface.gif" alt="Public interface" title="Public interface" /></td><td><a href="T_log4net_Core_ILoggerWrapper.htm">ILoggerWrapper</a></td><td><div class="summary">
            Base interface for all wrappers
            </div></td></tr><tr data="interface; public"><td><img src="../icons/pubinterface.gif" alt="Public interface" title="Public interface" /></td><td><a href="T_log4net_Core_IOptionHandler.htm">IOptionHandler</a></td><td><div class="summary">
            Interface used to delay activate a configured object.
            </div></td></tr><tr data="interface; public"><td><img src="../icons/pubinterface.gif" alt="Public interface" title="Public interface" /></td><td><a href="T_log4net_Core_IRepositorySelector.htm">IRepositorySelector</a></td><td><div class="summary">
            Interface used by the <a href="T_log4net_LogManager.htm">LogManager</a> to select the <a href="T_log4net_Repository_ILoggerRepository.htm">ILoggerRepository</a>.
            </div></td></tr><tr data="interface; public"><td><img src="../icons/pubinterface.gif" alt="Public interface" title="Public interface" /></td><td><a href="T_log4net_Core_ITriggeringEventEvaluator.htm">ITriggeringEventEvaluator</a></td><td><div class="summary">
            Test if an <a href="T_log4net_Core_LoggingEvent.htm">LoggingEvent</a> triggers an action
            </div></td></tr><tr data="interface; public"><td><img src="../icons/pubinterface.gif" alt="Public interface" title="Public interface" /></td><td><a href="T_log4net_Core_LevelCollection_ILevelCollectionEnumerator.htm">LevelCollection<span id="LST86C968C4_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST86C968C4_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ILevelCollectionEnumerator</a></td><td><div class="summary">
            Supports type-safe iteration over a <a href="T_log4net_Core_LevelCollection.htm">LevelCollection</a>.
            </div></td></tr></table><div class="OH_CollapsibleAreaRegion"><div class="OH_regiontitle">Delegates</div><div class="OH_CollapsibleArea_HrDiv"><hr class="OH_CollapsibleArea_Hr" /></div></div><div class="OH_clear"> </div><table id="typeList" class="members"><tr><th class="ps_iconColumn">
					 
				</th><th>Delegate</th><th>Description</th></tr><tr data="delegate; public"><td><img src="../icons/pubdelegate.gif" alt="Public delegate" title="Public delegate" /></td><td><a href="T_log4net_Core_LoggerRepositoryCreationEventHandler.htm">LoggerRepositoryCreationEventHandler</a></td><td><div class="summary">
            Delegate used to handle logger repository creation event notifications
            </div></td></tr><tr data="delegate; public"><td><img src="../icons/pubdelegate.gif" alt="Public delegate" title="Public delegate" /></td><td><a href="T_log4net_Core_WrapperCreationHandler.htm">WrapperCreationHandler</a></td><td><div class="summary">
            Delegate used to handle creation of new wrappers.
            </div></td></tr></table><div class="OH_CollapsibleAreaRegion"><div class="OH_regiontitle">Enumerations</div><div class="OH_CollapsibleArea_HrDiv"><hr class="OH_CollapsibleArea_Hr" /></div></div><div class="OH_clear"> </div><table id="typeList" class="members"><tr><th class="ps_iconColumn">
					 
				</th><th>Enumeration</th><th>Description</th></tr><tr data="enumeration; public"><td><img src="../icons/pubenumeration.gif" alt="Public enumeration" title="Public enumeration" /></td><td><a href="T_log4net_Core_ErrorCode.htm">ErrorCode</a></td><td><div class="summary">
            Defined error codes that can be passed to the <span class="nolink">[M:IErrorHandler.Error(string, Exception, ErrorCode)]</span> method.
            </div></td></tr><tr data="enumeration; public"><td><img src="../icons/pubenumeration.gif" alt="Public enumeration" title="Public enumeration" /></td><td><a href="T_log4net_Core_FixFlags.htm">FixFlags</a></td><td><div class="summary">
            Flags passed to the <a href="P_log4net_Core_LoggingEvent_Fix.htm">Fix</a> property
            </div></td></tr><tr data="enumeration; public"><td><img src="../icons/protenumeration.gif" alt="Protected enumeration" title="Protected enumeration" /></td><td><a href="T_log4net_Core_LevelCollection_Tag.htm">LevelCollection<span id="LST86C968C4_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST86C968C4_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Tag</a></td><td><div class="summary">
            Type visible only to our subclasses
            Used to access protected constructor
            </div></td></tr></table></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-2016 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>