2012-01-23 186 views
2

今天有一些奇怪的事情发生在我身上。我有一个使用log4net安装的asp.net mvc应用程序,并且一切正常。某些地方肯定有变化,现在没有任何记录(没有创建日志文件)。Log4net配置问题

这里是我的global.asax.cx

protected void Application_Start() 
{ 
    log4net.Config.XmlConfigurator.Configure(); 
} 

这是我在我的web.config配置:

<configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> 
    </configSections> 
    <log4net> 
    <appender name="FileAppender" type="log4net.Appender.RollingFileAppender"> 
     <file value="c:\logs\api\ApiLog.txt" /> 
     <appendToFile value="true" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date - %message%newline" /> 
     </layout> 
    </appender> 
    <root> 
     <level value="ALL" /> 
     <appender-ref ref="FileAppender" /> 
    </root> 
    </log4net> 

出于某种原因,c:\logs\api\apilog.txt文件永远不会被创建。但是,如果我改变我的application_start方法来此,它工作正常:

log4net.Config.XmlConfigurator.Configure(new FileInfo("DirectPathToMy\web.config")); 

任何想法,为什么叫Configure()没有发现在我的web.config默认配置?

+2

你确定''部分是在根目录'〜/ web.config'文件中定义的,而不是'〜/ Views/web.config'文件中的? –

回答

2

不知道为什么你的方法不起作用,但问题是你需要确保它在你的项目中被激活。

我通常把这个作为我的AssemblyInfo.cs汇编级标记下/属性:

[装配:log4net.Config.XmlConfigurator()]

参考: http://logging.apache.org/log4net/release/manual/configuration.html

+0

我不确定“激活”是什么意思。我从我的Application_Startup方法调用。这还不够吗?以前似乎都有效。 – Micah

+0

工作原理......但为什么不从application_start中调用它? – Micah