开发者

How to add new custom section definition and its Details

I want to add new configuration section definition in <configSections> i开发者_JS百科n my web.config file using the IIS7 Management Console Configuration Editor and generate a script and execute this script in the installation to update the client's production servers.

I was able to add the section definition using the following code:

ServerManager serverManager = new ServerManager(); 
Configuration config = 
  serverManager.GetWebConfiguration("Default Web site/upngisintegration"); 
SectionGroup rootSectionGroup = config.RootSectionGroup;

SectionDefinition logSectiondef = 
  rootSectionGroup.Sections.Add("loggingConfiguration"); 
logSectiondef.Type = 
  @"Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, 
  Microsoft.Practices.EnterpriseLibrary.Logging, Version=2.0.0.0, 
  Culture=neutral, PublicKeyToken=null"; 

serverManager.CommitChanges();

However, I don't know how to add the configuration detail (see below).

How do I do this?

Section Definition:

<section name="loggingConfiguration" 
  type="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings,
  Microsoft.Practices.EnterpriseLibrary.Logging, Version=2.0.0.0, 
  Culture=neutral, PublicKeyToken=null" />

Section Details:

<loggingConfiguration 
    name="Logging Application Block" 
    tracingEnabled="true" 
    defaultCategory="General">
    <listeners>
      <add fileName="C:\temp\xxxxx.log" ..snipped for brevity.. />
      <add timestampFormat="MM-dd-yyyy HH-mm-ss" ..snipped for brevity... />
    </listeners>
    <formatters>
      <add template="...." ..snipped for brevity.../>
    </formatters>
    <categorySources>
      <add switchValue="All" name="General">
        <listeners>
          <add name="RollingFile TraceListener" />
        </listeners>
      </add>X
      <add switchValue="All" name="Inbound Outbound Trans">
        <listeners>
          <add name="RollingFile TraceListener" />
        </listeners>
      </add>
    </categorySources>
    <specialSources>
      <allEvents switchValue="All" name="All Events" />
      <notProcessed switchValue="All" name="Unprocessed Category" />
      <errors switchValue="All" name="Logging Errors &amp; Warnings">
        <listeners>
          <add name="RollingFile TraceListener" />
        </listeners>
      </errors>
    </specialSources>
  </loggingConfiguration> 


After couple of days of research i had to do the following steps to generate the required scripts.

  1. Create a custom_schema.xml with the schema definition for Logging Application Block(see below) .. it is a very tedious process
  2. Copy that file C:\Windows\System32\inetsrv\config\schema
  3. Add a Section definition in the web.config (application's web.config) manually
  4. Open the IIS7 Console->Click on the Configuration Editor (Security group)
  5. Select the above added section (it should appear in the list - loggingConfiguration)
  6. It should show you the complete definition
  7. Edit the required value (funny thing is we have to edit all the values,even though you have default values, otherwise you will get only the changed values in the script)
  8. You can click on the Generate Script link

See below for sample custom_schema.xml

--- Logging Application block's Schema details (CUSTOM_schema.xml)

<configSchema> 
  <sectionSchema name="loggingConfiguration"> 
 <attribute name="name" type="string" />
 <attribute name="tracingEnabled" type="bool" defaultValue="true"/>
 <attribute name="defaultCategory" type="string" defaultValue="General"/>
    <attribute name="type" type="string" defaultValue="Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings, Microsoft.Practices.EnterpriseLibrary.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"/>            
 <element name="listeners">
  <collection addElement="add" removeElement="remove" clearElement="clear">
            <attribute name="fileName" required="true" type="string" defaultValue="c:\temp\log.log" />
   <attribute name="header" required="true" type="string" defaultValue="-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-" />
   <attribute name="footer" required="true" type="string" defaultValue="-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-" />
   <attribute name="formatter" required="true" type="string" defaultValue="Text Formatter" />
   <attribute name="listenerDataType" required="true" type="string" defaultValue="LogicaCMG.EnterpriseLibraryExtensions.Logging.Configuration.RollingFileTraceListenerData, LogicaCMG.EnterpriseLibraryExtensions.Logging, Version=0.5.2.0, Culture=neutral, PublicKeyToken=null"  />
   <attribute name="traceOutputOptions" required="true" type="string" defaultValue="None" />
   <attribute name="type" type="string" required="true" defaultValue="Microsoft.Practices.EnterpriseLibrary.Logging.TraceListeners.FlatFileTraceListener, Microsoft.Practices.EnterpriseLibrary.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"  />
   <attribute name="name" type="string" required="true" defaultValue="RollingFile TraceListener" />  
   <attribute name="ageThreshold" type="string" required="true" defaultValue="1" />  
   <attribute name="ageUnit" type="string" required="true" defaultValue="Days" />  
   <attribute name="sizeThreshold" type="string" required="true" defaultValue="2" />  
   <attribute name="sizeUnit" type="string" required="true" defaultValue="Megabytes" />  
   <attribute name="maximumNumberOfLogs" type="string" required="true" defaultValue="20" /> 
   <attribute name="timestampFormat" type="string" required="true" defaultValue="MM-dd-yyyy HH-mm-ss" /> 
        </collection>     
 </element> 
 <element name="formatters">
  <collection addElement="add" removeElement="remove" clearElement="clear">
            <attribute name="template" required="true" type="string" defaultValue="Timestamp:{timestamp(local:F)}&#xA;Message: {message}&#xA;Category: {category}&#xA;Priority: {priority}&#xA;Severity: {severity}"  />   
   <attribute name="type" type="string"  required="true" defaultValue="Microsoft.Practices.EnterpriseLibrary.Logging.Formatters.TextFormatter, Microsoft.Practices.EnterpriseLibrary.Logging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" />
   <attribute name="name" required="true" type="string" defaultValue="Text Formatter" />   
        </collection>     
 </element> 
 <element name="categorySources">
  <collection addElement="add" removeElement="remove" clearElement="clear">
            <attribute name="switchValue"  required="true" type="string" defaultValue="All"  />      
   <attribute name="name" required="true" type="string" defaultValue="General"/>       
   <element name="listeners">
     <collection addElement="add" removeElement="remove" clearElement="clear">      
      <attribute name="name" required="true" type="string" defaultValue="RollingFile TraceListener"/>       
     </collection>
    </element>
        </collection>        
 </element> 
 <element name="specialSources">
  <element name="allEvents">
   <attribute name="switchValue"  type="string" defaultValue="All"/>
   <attribute name="name" type="string" defaultValue="All Events"/>
  </element>
  <element name="notProcessed">
   <attribute name="switchValue"  type="string" defaultValue="All"/>
   <attribute name="name"  type="string" defaultValue="Unprocessed Category"/>
  </element>
  <element name="errors">
   <attribute name="switchValue"   type="string" defaultValue="All"/>
   <attribute name="name"  type="string" defaultValue="Logging Errors &amp; Warnings"/>
   <element name="listeners">
    <collection addElement="add" removeElement="remove" clearElement="clear">      
     <attribute name="name"  type="string" defaultValue="RollingFile TraceListener"/>       
    </collection>
   </element>        
  </element>      
 </element> 
  </sectionSchema> 
</configSchema> 
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜