我需要根据环境更改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
中时,这只能起作用答案 0 :(得分:1)
为什么不以编程方式更改 ?
var loggingConfigurationFile = HttpContext.Current.IsDebuggingEnabled ? "conf/Log4netDev.config" : "conf/Log4netRelease.config";
log4net.Config.XmlConfigurator.Configure(new FileInfo(loggingConfigurationFile));