簡體   English   中英

log4net更改web.config表單中的LogLevel測試代碼

[英]log4net change LogLevel in web.config form test code

這是我的服務web.config log4net 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>

我想在功能測試(C#)准備期間,通過掛鈎到現有的web.config文件,將<level value="INFO"/>更改為<level value="DEBUG"/>

- -編輯 - -

弄清楚。 這不是單元測試。 這是E2E測試,用於部署到test-env的生產服務工件。 我唯一能做的就是修改web.config文件。

! - -編輯 - -

目前,我有兩個想法:

1)將web.config解析為XML文件,

2)使用正則表達式(我知道我會遇到兩個問題:))

我想知道是否存在一種通用的更改日志級別的方法(也許是某種針對C#的log4net配置API?)

實現此目標的最佳解決方案是什么?

無需編輯您的配置文件。 您可以在運行時通過測試類更改為日志級別:

((log4net.Repository.Hierarchy.Hierarchy)LogManager.GetRepository()).Root.Level = Level.Debug;
((log4net.Repository.Hierarchy.Hierarchy)LogManager.GetRepository()).RaiseConfigurationChanged(EventArgs.Empty);

有時,最簡單的解決方案就是最好的解決方案。 我放棄了尋找log4net機制和正則表達式解決方案的搜索。 最終版本是:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM