咨询区
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