﻿<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>XmlConfiguratorAttribute Class</title><meta name="Language" content="en-us" /><meta name="System.Keywords" content="XmlConfiguratorAttribute class" /><meta name="System.Keywords" content="log4net.Config.XmlConfiguratorAttribute class" /><meta name="System.Keywords" content="XmlConfiguratorAttribute class, about XmlConfiguratorAttribute class" /><meta name="Microsoft.Help.F1" content="log4net.Config.XmlConfiguratorAttribute" /><meta name="Microsoft.Help.Id" content="T:log4net.Config.XmlConfiguratorAttribute" /><meta name="Description" content="Assembly level attribute to configure the ." /><meta name="Microsoft.Help.ContentType" content="Reference" /><meta name="BrandingAware" content="true" /><meta name="container" content="log4net.Config" /><meta name="file" content="T_log4net_Config_XmlConfiguratorAttribute" /><meta name="guid" content="T_log4net_Config_XmlConfiguratorAttribute" /></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">XmlConfiguratorAttribute 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">
            Assembly level attribute to configure the <a href="T_log4net_Config_XmlConfigurator.htm">XmlConfigurator</a>.
            </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="LST592FEE6F_0"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST592FEE6F_0?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Object</a><br />  <a href="http://msdn2.microsoft.com/en-us/library/e8kc3626" target="_blank">System<span id="LST592FEE6F_1"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST592FEE6F_1?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Attribute</a><br />    <a href="T_log4net_Config_ConfiguratorAttribute.htm">log4net.Config<span id="LST592FEE6F_2"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST592FEE6F_2?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>ConfiguratorAttribute</a><br />      <span class="selflink">log4net.Config<span id="LST592FEE6F_3"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST592FEE6F_3?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>XmlConfiguratorAttribute</span><br />        <a href="T_log4net_Config_DOMConfiguratorAttribute.htm">log4net.Config<span id="LST592FEE6F_4"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST592FEE6F_4?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>DOMConfiguratorAttribute</a><br /><p> </p><strong>Namespace:</strong> <a href="N_log4net_Config.htm">log4net.Config</a><br /><strong>Assembly:</strong> log4net (in log4net.dll) Version: 2.0.6.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="identifier">SerializableAttribute</span>]
<span class="keyword">public</span> <span class="keyword">class</span> <span class="identifier">XmlConfiguratorAttribute</span> : <span class="identifier">ConfiguratorAttribute</span></pre></div><div id="ID0EDCA_code_Div2" class="OH_CodeSnippetContainerCode" style="display: none"><pre xml:space="preserve">&lt;<span class="identifier">SerializableAttribute</span>&gt;
<span class="keyword">Public</span> <span class="keyword">Class</span> <span class="identifier">XmlConfiguratorAttribute</span>
	<span class="keyword">Inherits</span> <span class="identifier">ConfiguratorAttribute</span></pre></div><div id="ID0EDCA_code_Div3" class="OH_CodeSnippetContainerCode" style="display: none"><pre xml:space="preserve">[<span class="identifier">SerializableAttribute</span>]
<span class="keyword">public</span> <span class="keyword">ref class</span> <span class="identifier">XmlConfiguratorAttribute</span> : <span class="keyword">public</span> <span class="identifier">ConfiguratorAttribute</span></pre></div><div id="ID0EDCA_code_Div4" class="OH_CodeSnippetContainerCode" style="display: none"><pre xml:space="preserve">[&lt;<span class="identifier">SerializableAttribute</span>&gt;]
<span class="keyword">type</span> <span class="identifier">XmlConfiguratorAttribute</span> =  
    <span class="keyword">class</span>
        <span class="keyword">inherit</span> <span class="identifier">ConfiguratorAttribute</span>
    <span class="keyword">end</span></pre></div></div></div><script type="text/javascript">AddLanguageTabSet("ID0EDCA");</script><p>The <span class="selflink">XmlConfiguratorAttribute</span> type exposes the following members.</p><div class="OH_CollapsibleAreaRegion"><div class="OH_regiontitle">Constructors</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;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_log4net_Config_XmlConfiguratorAttribute__ctor.htm">XmlConfiguratorAttribute</a></td><td><div class="summary">
            Default constructor
            </div></td></tr></table><a href="#mainBody">Top</a><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;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_log4net_Config_XmlConfiguratorAttribute_ConfigFile.htm">ConfigFile</a></td><td><div class="summary">
            Gets or sets the filename of the configuration file.
            </div></td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_log4net_Config_XmlConfiguratorAttribute_ConfigFileExtension.htm">ConfigFileExtension</a></td><td><div class="summary">
            Gets or sets the extension of the configuration file.
            </div></td></tr><tr data="public;inherited;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/sa1bf03e" target="_blank">TypeId</a></td><td><div class="summary">
                    When implemented in a derived class, gets a unique identifier for this <a href="http://msdn2.microsoft.com/en-us/library/e8kc3626" target="_blank">Attribute</a>.
                </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e8kc3626" target="_blank">Attribute</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubproperty.gif" alt="Public property" title="Public property" /></td><td><a href="P_log4net_Config_XmlConfiguratorAttribute_Watch.htm">Watch</a></td><td><div class="summary">
            Gets or sets a value indicating whether to watch the configuration file.
            </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="M_log4net_Config_ConfiguratorAttribute_CompareTo.htm">CompareTo</a></td><td><div class="summary">
            Compare this instance to another ConfiguratorAttribute
            </div> (Inherited from <a href="T_log4net_Config_ConfiguratorAttribute.htm">ConfiguratorAttribute</a>.)</td></tr><tr data="public;declared;notNetfw;"><td><img src="../icons/pubmethod.gif" alt="Public method" title="Public method" /></td><td><a href="M_log4net_Config_XmlConfiguratorAttribute_Configure.htm">Configure</a></td><td><div class="summary">
            Configures the <a href="T_log4net_Repository_ILoggerRepository.htm">ILoggerRepository</a> for the specified assembly.
            </div> (Overrides <a href="M_log4net_Config_ConfiguratorAttribute_Configure.htm">ConfiguratorAttribute<span id="LST592FEE6F_5"></span><script type="text/javascript">AddLanguageSpecificTextSet("LST592FEE6F_5?cs=.|vb=.|cpp=::|nu=.|fs=.");</script>Configure(Assembly, ILoggerRepository)</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/09ds241w" target="_blank">Equals</a></td><td><div class="summary">
                    Returns a value that indicates whether this instance is equal to a specified object.
                </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e8kc3626" target="_blank">Attribute</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/4k87zsw7" target="_blank">Finalize</a></td><td><div class="summary">
                    Allows an <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a> to attempt to free resources and perform other cleanup operations before the <a href="http://msdn2.microsoft.com/en-us/library/e5kfa45b" target="_blank">Object</a> is reclaimed by garbage collection.
                </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/365e1bxs" target="_blank">GetHashCode</a></td><td><div class="summary">
                    Returns the hash code for this instance.
                </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e8kc3626" target="_blank">Attribute</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/tbkb5x6t" target="_blank">IsDefaultAttribute</a></td><td><div class="summary">
                    When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.
                </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e8kc3626" target="_blank">Attribute</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/wy7chz44" target="_blank">Match</a></td><td><div class="summary">
                    When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.
                </div> (Inherited from <a href="http://msdn2.microsoft.com/en-us/library/e8kc3626" target="_blank">Attribute</a>.)</td></tr><tr data="protected;inherited;notNetfw;"><td><img src="../icons/protmethod.gif" alt="Protected method" title="Protected method" /></td><td><a href="http://msdn2.microsoft.com/en-us/library/57ctke0a" target="_blank">MemberwiseClone</a></td><td><div class="summary">
                    Creates a shallow copy of 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/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>
            This attribute may only be used at the assembly scope and can only
            be used once per assembly.
            </p><p>
            Use this attribute to configure the <a href="T_log4net_Config_XmlConfigurator.htm">XmlConfigurator</a>
            without calling one of the <span class="nolink">[M:XmlConfigurator.Configure()]</span>
            methods.
            </p><p>
            If neither of the <a href="P_log4net_Config_XmlConfiguratorAttribute_ConfigFile.htm">ConfigFile</a> or <a href="P_log4net_Config_XmlConfiguratorAttribute_ConfigFileExtension.htm">ConfigFileExtension</a>
            properties are set the configuration is loaded from the application's .config file.
            If set the <a href="P_log4net_Config_XmlConfiguratorAttribute_ConfigFile.htm">ConfigFile</a> property takes priority over the
            <a href="P_log4net_Config_XmlConfiguratorAttribute_ConfigFileExtension.htm">ConfigFileExtension</a> property. The <a href="P_log4net_Config_XmlConfiguratorAttribute_ConfigFile.htm">ConfigFile</a> property
            specifies a path to a file to load the config from. The path is relative to the
            application's base directory; <a href="http://msdn2.microsoft.com/en-us/library/y6sdkxe2" target="_blank">BaseDirectory</a>.
            The <a href="P_log4net_Config_XmlConfiguratorAttribute_ConfigFileExtension.htm">ConfigFileExtension</a> property is used as a postfix to the assembly file name.
            The config file must be located in the  application's base directory; <a href="http://msdn2.microsoft.com/en-us/library/y6sdkxe2" target="_blank">BaseDirectory</a>.
            For example in a console application setting the <a href="P_log4net_Config_XmlConfiguratorAttribute_ConfigFileExtension.htm">ConfigFileExtension</a> to
            <span class="code">config</span> has the same effect as not specifying the <a href="P_log4net_Config_XmlConfiguratorAttribute_ConfigFile.htm">ConfigFile</a> or 
            <a href="P_log4net_Config_XmlConfiguratorAttribute_ConfigFileExtension.htm">ConfigFileExtension</a> properties.
            </p><p>
            The <a href="P_log4net_Config_XmlConfiguratorAttribute_Watch.htm">Watch</a> property can be set to cause the <a href="T_log4net_Config_XmlConfigurator.htm">XmlConfigurator</a>
            to watch the configuration file for changes.
            </p><div class="alert"><table><tr><th><img src="../icons/alert_note.gif" alt="Note" /> Note</th></tr><tr><td><p>
            Log4net will only look for assembly level configuration attributes once.
            When using the log4net assembly level attributes to control the configuration 
            of log4net you must ensure that the first call to any of the 
            <a href="T_log4net_Core_LoggerManager.htm">LoggerManager</a> methods is made from the assembly with the configuration
            attributes. 
            </p><p>
            If you cannot guarantee the order in which log4net calls will be made from 
            different assemblies you must use programmatic configuration instead, i.e.
            call the <span class="nolink">[M:XmlConfigurator.Configure()]</span> method directly.
            </p></td></tr></table></div><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_Config.htm">log4net.Config 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-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>