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 & 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.
- Create a custom_schema.xml with the schema definition for Logging Application Block(see below) .. it is a very tedious process
- Copy that file C:\Windows\System32\inetsrv\config\schema
- Add a Section definition in the web.config (application's web.config) manually
- Open the IIS7 Console->Click on the Configuration Editor (Security group)
- Select the above added section (it should appear in the list - loggingConfiguration)
- It should show you the complete definition
- 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)
- 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)}
Message: {message}
Category: {category}
Priority: {priority}
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 & 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>
精彩评论