log4net动态改变conf文件路径

时间:2016-01-11 14:59:13

标签: c# asp.net log4net

我需要根据环境更改conf文件路径。 在我的Gobal.asaw.cs中我有:

log4net.Config.XmlConfigurator.Configure();

在我的web.config中:

 <add key="log4net.Config" value="conf/Log4netDev.config"/>
 <add key="log4net.Config.Watch" value="True"/>

在我的web.Debug.config中:

<add key="log4net.Config" value="conf/Log4netDev.config" xdt:Locator="Match(key)" xdt:Transform="Replace" />
<add key="log4net.Config.Watch" value="True" xdt:Locator="Match(key)" xdt:Transform="Replace"/>

在我的web.Release.config中:

<add key="log4net.Config" value="conf/Log4netRelease.config" xdt:Locator="Match(key)" xdt:Transform="Replace" />
<add key="log4net.Config.Watch" value="True" xdt:Locator="Match(key)" xdt:Transform="Replace"/>

所以在我的web.config中,log4net.Config值与web.debug.config中的相同 使用visual studio,如果我在调试中运行,我可以找到我应该在的logFile,一切正常。 如果我在发布中运行,没有日志文件...

我试图用web.release.config中的值替换web.config中的log4net.Config值,现在:当我在Release中运行项目时,我有我的日志文件而不再在调试中。 我理解的是,当值在web.config

中时,这只能起作用

1 个答案:

答案 0 :(得分:1)

为什么不以编程方式更改

    var loggingConfigurationFile = HttpContext.Current.IsDebuggingEnabled ? "conf/Log4netDev.config" : "conf/Log4netRelease.config";
    log4net.Config.XmlConfigurator.Configure(new FileInfo(loggingConfigurationFile));