下面是我的服务log4net web.config的配置部分
<log4net>
<appender name="OutputDebugStringAppender">
...
</appender>
<appender name="RollingFileAppender">
...
</appender>
<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
...
</appender>
<root>
<level value="INFO"/>
<appender-ref ref="OutputDebugStringAppender"/>
<appender-ref ref="RollingFileAppender"/>
<appender-ref ref="EventLogAppender"/>
</root>
</log4net>在功能测试( functional,C#)准备过程中,我希望通过链接到现有的web.config文件将C#更改为web.config。
--编辑--
把事情弄清楚。这不是单元测试。这是E2E测试,用于部署到test-env的生产服务工件。我唯一能做的就是修改web.config文件。
!--编辑--
目前,我有两个想法:
1)将web.config解析为XML文件,
2)使用regex (我知道我会遇到两个问题:)
我想知道是否有一种通用的方法来更改日志级别(也许是某种用于log4net的C#配置API?)
实现这一目标的最佳解决方案是什么?
发布于 2017-10-24 08:45:41
有时最简单的解决方案就是最好的解决方案。我已经放弃了寻找log4net机制和regex解决方案。最后的版本是:
XmlDocument doc = new XmlDocument();
doc.Load(configFilePath);
XmlNode node = doc.SelectSingleNode("//log4net/root/level");
node.Attributes["value"].Value = "DEBUG";
doc.Save(configFilePath);发布于 2017-10-23 12:55:04
不需要编辑配置文件。可以在运行时将测试类更改为日志级别:
((log4net.Repository.Hierarchy.Hierarchy)LogManager.GetRepository()).Root.Level = Level.Debug;
((log4net.Repository.Hierarchy.Hierarchy)LogManager.GetRepository()).RaiseConfigurationChanged(EventArgs.Empty);https://stackoverflow.com/questions/46889328
复制相似问题