Log4net不写入日志文件

我创build了一个简单的scheme使用Log4net,但似乎我的appender不起作用,因为邮件没有添加到日志文件。

我将以下内容添加到web.config文件中:

<configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" requirePermission="false"/> </configSections> <log4net> <appender name="LogFileAppender" type="log4net.Appender.FileAppender"> <file value="D:\MyData\Desktop\LogFile.txt" /> <appendToFile value="true" /> <encoding value="utf-8" /> <layout type="log4net.Layout.SimpleLayout" /> </appender> <root> <level value="INFO" /> <appender-ref ref="LogFileAppender" /> </root> </log4net> 

在全球的ASAX文件中,我补充道:

 ILog logger = LogManager.GetLogger(typeof(MvcApplication)); 

并在Application_Start方法中:

 logger.Info("Starting the application..."); 

我做错了什么?

在此先感谢Johannes

你打电话吗?

 log4net.Config.XmlConfigurator.Configure(); 

在什么地方让log4net读取你的configuration? 例如在Global.asax中:

 void Application_Start(object sender, EventArgs e) { // Code that runs on application startup // Initialize log4net. log4net.Config.XmlConfigurator.Configure(); } 

使用这个FAQ页面: Apache log4net常见问题

大约3/4的方式告诉你如何使用应用程序跟踪启用log4netdebugging。 这将告诉你你的问题在哪里。

基础是:

 <?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="log4net.Internal.Debug" value="true"/> </appSettings> </configuration> 

你会看到标准输出中的痕迹

正如@AndreasPaulsson所build议的,我们需要对其进行configuration。 我在AssemblyInfo文件中进行configuration。 我在这里指定configuration file name

 // Log4Net Configuration. [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)] 

确保站点正在运行的进程(帐户)具有写入输出目录的权限。

在IIS 7及以上版本中,这是在应用程序池上configuration的,通常是AppPool标识 ,它通常不具有写入所有目录的权限。

检查您的事件日志(应用程序和安全性),看是否有任何exception抛出。

此外,请确保为[log4net] .configselect了“总是复制”选项,如下图所示:

在这里输入图像说明

插:

  [assembly: log4net.Config.XmlConfigurator(Watch = true)] 

AssemblyInfo.cs文件的结尾

在我的情况下,由于在我的项目名称中有空格,log4net没有正确logging。 开车让我为什么相同的代码在另一个项目中工作得很好,但没有在新的项目中。 空间。 一个简单的空间。

所以,要小心项目名称中的空格。 我已经吸取了教训。

对于我来说,我移动了日志文件的位置,只有当我将文件的名称更改为其他名称时,才重新开始。

看来如果有一个同名的日志文件已经存在,什么都不会发生。

之后,我重命名旧文件,并将configuration中的日志文件名改回原来的样子。