我正在尝试将log4net日志记录添加到我正在编写的Web应用程序中。我在网络服务方法中得到了这个:
log4net.Config.XmlConfigurator.Configure();
log4net.ILog log = log4net.LogManager.GetLogger(typeof(Methods));
log.Info("Some information");
这是在web.config文件中:
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<system.web>
<compilation debug="true" targetFramework="4.0" />
<authentication mode="Windows" />
<identity impersonate="true"/>
</system.web>
<log4net>
<appender name="LogFileAppender" type="log4net.Appender.RollFileAppender">
<file value="log.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="1MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.SimpleLayout" />
</appender>
<root>
<level value="ALL" />
<appender-ref ref="LogFileAppender" />
</root>
</log4net>
当我通过Visual Studio 2010进行调试时,我希望日志文件出现在bin \目录中,但没有写入任何内容。该方法成功运行,没有任何异常,但我找不到日志文件。关于它应该出现在哪里的任何想法?
编辑 - 一些额外信息: 根据通知区域图标,ASP.Net Development Server正在运行:
C:\Users\jpope\Documents\Visual Studio 2010\Projects\WebApplication1\WebApplication1\
此目录和\ bin \ sub-directory上的权限都为SYSTEM,me和Administrators提供了完全控制权,并且没有任何其他任何访问权限。日志文件不在上面显示的目录或\ bin \ sub-directory中。
答案 0 :(得分:1)
如果你愿意涉足一些低级别的东西,那么看看Process Monitor认为Web服务器进程试图写入的内容可能会很有趣。至少它比浏览log4net文档更有趣。
答案 1 :(得分:0)
也许你应该设置asp.net用户具有你的web目录的写权。
答案 2 :(得分:0)
这结果是一个配置问题。切换到FileAppender
而不是RollFileAppender可以正常工作。现在我需要找出RollFileAppender
配置有什么问题......
修改:这是RollingFileAppender
,而不是RollFileAppender
。