咨询区
- john84: 
我在一个小项目中用上了 Log4Net,程序跑起来后没有任何日志写入到 log 文件,可能是我的 log appender 配的有问题,尴尬????,大家看看我这样配的有问题吗?
web.config 完整的配置如下。
<configSections><p 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>然后在 global.ascx 中是这样配置的。
ILog logger = LogManager.GetLogger(typeof(MvcApplication));然后是 Application_Start 方法。
logger.Info("Starting the application...");为啥消息 Starting the application...  没有写入到 log 中哈。。。
回答区
- Andreas Paulsson: 
你还缺了一个调用
log4net.Config.XmlConfigurator.Configure();把它放到一个代码可以执行到的地方,比如:Global.asax
void Application_Start(object sender, EventArgs e) 
{// Code that runs on application startup// Initialize log4net.log4net.Config.XmlConfigurator.Configure();
}你也可以放到 AssemblyInfo.cs 的尾部。
[assembly: log4net.Config.XmlConfigurator(Watch = true)]- Ayub: 
确保 log4net.config 的属性面板上一定要设置为 Copy always。

- Rahatur: 
在我的场景下,我需要给 IIS_IUSRS 赋予一个读写 logfile 的权限。
点评区
首先说一下为啥要精选本题,因为大佬们提到的坑,我都踩到了。。。后来不得已,将 操作步骤 写入到 印象笔记 中,搞笑的是最近部署一个新加坡项目时,刚好就遇到了当前 IIS 用户没有写入权限,各种报错,也是尴尬。
原文链接:hhttps://stackoverflow.com/questions/3618380/log4net-does-not-write-the-log-in-the-log-file