log4net在web.config表单测试代码中更改LogLevel

时间:2017-10-23 12:25:56

标签: c# web-config log4net

以下是我的服务web.config中的log4net配置部分:

<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>

我想通过挂钩到现有的<level value="INFO"/>文件,在功能测试(C#)准备期间将<level value="DEBUG"/>更改为web.config

--- --- EDIT

让事情变得清晰。这不是单元测试。这是针对部署到test-env的生产服务工件的E2E测试。我唯一能做的就是修改web.config文件。

!--- --- EDIT

目前,我有两个想法:

1)将web.config解析为XML文件,

2)使用正则表达式(我知道我会遇到两个问题:))

我想知道是否有通用的方法来更改日志级别(可能是某种用于C#的log4net配置API?)

实现这一目标的最佳解决方案是什么?

2 个答案:

答案 0 :(得分:0)

无需编辑配置文件。您可以在运行时使用测试类更改为loglevel:

--global_int

答案 1 :(得分:0)

有时最简单的解决方案是最佳解决方案。 我已经放弃了搜索log4net机制和正则表达式解决方案的工作。 最终版本是:

XmlDocument doc = new XmlDocument();
doc.Load(configFilePath);
XmlNode node = doc.SelectSingleNode("//log4net/root/level");
node.Attributes["value"].Value = "DEBUG";
doc.Save(configFilePath);