1
votes

I'm trying to add log4net logging to a web application I'm writing. I've got this in a web service method:

log4net.Config.XmlConfigurator.Configure();  
log4net.ILog log = log4net.LogManager.GetLogger(typeof(Methods));

log.Info("Some information");

And this in the web.config file:

<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>    

I was expecting the log file to appear in the bin\ directory when I debug it through Visual Studio 2010, but nothing is written there. The method runs successfully without any exceptions, but I can't find the log file. Any ideas as to where it should appear?

Edit - Some extra info: According to the notification area icon, the ASP.Net Development Server is running in:

C:\Users\jpope\Documents\Visual Studio 2010\Projects\WebApplication1\WebApplication1\

The permissions on this directory and the \bin\ sub-directory both give SYSTEM, me and Administrators full control, and no one else any access. The log file is not in the directory shown above or the \bin\ sub-directory.

3

3 Answers

1
votes

If you're willing to wade into some low-level stuff, it might be interesting to see what Process Monitor thinks the web server process is trying to write to. At least it would be more fun than wading through the log4net documentation.

0
votes

Maybe you should set the asp.net user has the write right for you web directory.

0
votes

This turned out to be a configuration problem. Switching to a FileAppender instead of a RollFileAppender works fine. Now I need to find out what's wrong with the RollFileAppender configuration...

Edit: It's a RollingFileAppender, not a RollFileAppender.