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中的日志文件名改回原来的样子。