我正在使用带有共享点 2010 的 log4Net。我有一个功能,当我的灵魂使用以下代码以错误模式部署时,它会自动添加 log4net 配置
SPWebService service = SPWebService.ContentService;
service.WebConfigModifications.Clear();
//ADD log4Net config section
service.WebConfigModifications.Add(new SPWebConfigModification()
{
Path = "configuration/configSections",
Name = "section[@name='log4net']",
Sequence = 0,
Owner = CREATE_NAME,
Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode,
Value = string.Format(@"<section name='log4net' type='log4net.Config.Log4NetConfigurationSectionHandler, log4net, Version={0}, Culture=neutral, PublicKeyToken={1}' />", LOG4NET_VERSION, LOG4NET_PUBLIC_KEY_TOKEN)
});
string log4netConfig = @"<log4net>
<appender name='RollingFileAppender' type='log4net.Appender.RollingFileAppender'>
<file value='C:\\logs\\Logger.log' />
<appendToFile value='true' />
<rollingStyle value='Composite' />
<datePattern value='yyyyMMdd' />
<maxSizeRollBackups value='200' />
<maximumFileSize value='50MB' />
<layout type='log4net.Layout.PatternLayout'>
<conversionPattern value='%d [%t] %-5p %c [%x] <%X{auth}> - %m%n' />
</layout>
</appender>
<root>
<level value='ERROR' />
<appender-ref ref='RollingFileAppender' />
</root>
</log4net>";
//add error default config
service.WebConfigModifications.Add(new SPWebConfigModification()
{
Path = "configuration",
Name = "log4net",
Sequence = 0,
Owner = CREATE_NAME,
Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode,
Value = log4netConfig
});
service.Update();
service.ApplyWebConfigModifications();
我想创建另一个功能来覆盖 log4net 的错误模式并将其更改为调试,以便最终用户不必手动修改 web 配置。问题是当第二个功能被激活时,它会删除第一个功能添加的所有内容。
这是标准行为吗??任何将激活的功能都会删除其他功能的更改。
编辑 2
复制步骤
创建 2 个特征。他们都应该在 web config 中添加一些不同的条目。
- 激活功能 1 - 功能 1 更改在 Web 配置中
- 激活功能 2 - 功能 2 更改在 Web 配置中,但功能 1 更改已消失
停用这两个功能
- 激活功能 2 - 功能 2 更改在 Web 配置中
- 激活功能 1 - 功能 1 更改在 Web 配置中,但功能 2 更改消失了