﻿<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>LogImpl Class</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="LogImpl class" /><meta name="System.Keywords" content="log4net.Core.LogImpl class" /><meta name="System.Keywords" content="LogImpl class, about LogImpl class" /><meta name="Microsoft.Help.F1" content="log4net.Core.LogImpl" /><meta name="Microsoft.Help.Id" content="T:log4net.Core.LogImpl" /><meta name="Description" content="Implementation of wrapper interface." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="'true'" /><meta name="container" content="log4net.Core" /><meta name="file" content="T_log4net_Core_LogImpl" /><meta name="guid" content="T_log4net_Core_LogImpl" /><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">LogImpl 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">
            Implementation of <a href="T_log4net_ILog.htm" target="">ILog</a> wrapper interface.
            </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="ID0EBHNAAAAA"> </span><script type="text/javascript">
					addToLanSpecTextIdSet("ID0EBHNAAAAA?vb=.|cpp=::|cs=.|fs=.|nu=.");
				</script>Object</a><br />  <a href="T_log4net_Core_LoggerWrapperImpl.htm" target="">log4net.Core<span id="ID0EBENAAAAA"> </span><script type="text/javascript">
					addToLanSpecTextIdSet("ID0EBENAAAAA?vb=.|cpp=::|cs=.|fs=.|nu=.");
				</script>LoggerWrapperImpl</a><br />    <span class="selflink">log4net.Core<span id="ID0EBBNAAAAA"> </span><script type="text/javascript">
					addToLanSpecTextIdSet("ID0EBBNAAAAA?vb=.|cpp=::|cs=.|fs=.|nu=.");
				</script>LogImpl</span><br /><p></p><b>Namespace:</b> <a href="N_log4net_Core.htm" target="">log4net.Core</a><br /><b>Assembly:</b> <span sdata="assembly">log4net</span> (in log4net.dll) Version: 1.2.14.0 (1.2.14.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">LogImpl</span> : <span class="identifier">LoggerWrapperImpl</span>, <span class="identifier">ILog</span>, 
	<span class="identifier">ILoggerWrapper</span></pre></div><div id="ID0ECADAAAAA_code_Plain_Div1" class="OH_CodeSnippetContainerCode" style="display: none"><pre>public class LogImpl : LoggerWrapperImpl, ILog, 
	ILoggerWrapper</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">LogImpl</span> 
	<span class="keyword">Inherits</span> <span class="identifier">LoggerWrapperImpl</span> 
	<span class="keyword">Implements</span> <span class="identifier">ILog</span>, <span class="identifier">ILoggerWrapper</span></pre></div><div id="ID0ECADAAAAA_code_Plain_Div2" class="OH_CodeSnippetContainerCode" style="display: none"><pre>Public Class LogImpl 
	Inherits LoggerWrapperImpl 
	Implements ILog, ILoggerWrapper</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">LogImpl</span> : <span class="keyword">public</span> <span class="identifier">LoggerWrapperImpl</span>, 
	<span class="identifier">ILog</span>, <span class="identifier">ILoggerWrapper</span></pre></div><div id="ID0ECADAAAAA_code_Plain_Div3" class="OH_CodeSnippetContainerCode" style="display: none"><pre>public ref class LogImpl : public LoggerWrapperImpl, 
	ILog, ILoggerWrapper</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 implementation of the <a href="T_log4net_ILog.htm" target="">ILog</a> interface
            forwards to the <a href="T_log4net_Core_ILogger.htm" target="">ILogger</a> held by the base class.
            </p><p>
            This logger has methods to allow the caller to log at the following
            levels:
            </p><dl class="authored"><dt>DEBUG</dt><dd>
                The <span class="nolink">[M:Debug(object)]</span> and <span class="nolink">[M:DebugFormat(string, object[])]</span> methods log messages
                at the <span class="code">DEBUG</span> level. That is the level with that name defined in the
                repositories <a href="P_log4net_Repository_ILoggerRepository_LevelMap.htm" target="">LevelMap</a>. The default value
                for this level is <a href="F_log4net_Core_Level_Debug.htm" target="">Debug</a>. The <a href="P_log4net_Core_LogImpl_IsDebugEnabled.htm" target="">IsDebugEnabled</a>
                property tests if this level is enabled for logging.
                </dd><dt>INFO</dt><dd>
                The <span class="nolink">[M:Info(object)]</span> and <span class="nolink">[M:InfoFormat(string, object[])]</span> methods log messages
                at the <span class="code">INFO</span> level. That is the level with that name defined in the
                repositories <a href="P_log4net_Repository_ILoggerRepository_LevelMap.htm" target="">LevelMap</a>. The default value
                for this level is <a href="F_log4net_Core_Level_Info.htm" target="">Info</a>. The <a href="P_log4net_Core_LogImpl_IsInfoEnabled.htm" target="">IsInfoEnabled</a>
                property tests if this level is enabled for logging.
                </dd><dt>WARN</dt><dd>
                The <span class="nolink">[M:Warn(object)]</span> and <span class="nolink">[M:WarnFormat(string, object[])]</span> methods log messages
                at the <span class="code">WARN</span> level. That is the level with that name defined in the
                repositories <a href="P_log4net_Repository_ILoggerRepository_LevelMap.htm" target="">LevelMap</a>. The default value
                for this level is <a href="F_log4net_Core_Level_Warn.htm" target="">Warn</a>. The <a href="P_log4net_Core_LogImpl_IsWarnEnabled.htm" target="">IsWarnEnabled</a>
                property tests if this level is enabled for logging.
                </dd><dt>ERROR</dt><dd>
                The <span class="nolink">[M:Error(object)]</span> and <span class="nolink">[M:ErrorFormat(string, object[])]</span> methods log messages
                at the <span class="code">ERROR</span> level. That is the level with that name defined in the
                repositories <a href="P_log4net_Repository_ILoggerRepository_LevelMap.htm" target="">LevelMap</a>. The default value
                for this level is <a href="F_log4net_Core_Level_Error.htm" target="">Error</a>. The <a href="P_log4net_Core_LogImpl_IsErrorEnabled.htm" target="">IsErrorEnabled</a>
                property tests if this level is enabled for logging.
                </dd><dt>FATAL</dt><dd>
                The <span class="nolink">[M:Fatal(object)]</span> and <span class="nolink">[M:FatalFormat(string, object[])]</span> methods log messages
                at the <span class="code">FATAL</span> level. That is the level with that name defined in the
                repositories <a href="P_log4net_Repository_ILoggerRepository_LevelMap.htm" target="">LevelMap</a>. The default value
                for this level is <a href="F_log4net_Core_Level_Fatal.htm" target="">Fatal</a>. The <a href="P_log4net_Core_LogImpl_IsFatalEnabled.htm" target="">IsFatalEnabled</a>
                property tests if this level is enabled for logging.
                </dd></dl><p>
            The values for these levels and their semantic meanings can be changed by 
            configuring the <a href="P_log4net_Repository_ILoggerRepository_LevelMap.htm" target="">LevelMap</a> for the repository.
            </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_Core_LogImpl.htm" target="">LogImpl Members</a></div><div class="seeAlsoStyle"><a href="N_log4net_Core.htm" target="">log4net.Core Namespace</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+LogImpl+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>