Very simple file appender logging not working

2020-05-23 08:45发布

问题:

Here's my web.config information:

  <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
      </configSections>
      <log4net>
        <root>
                <level value="ALL" />
        </root>
        <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
              <file value="c:\temp\log-file.txt" />
              <appendToFile value="true" />
              <rollingStyle value="Size" />
              <maxSizeRollBackups value="10" />
              <maximumFileSize value="1MB" />
              <staticLogFileName value="true" />
              <layout type="log4net.Layout.SimpleLayout" />
        </appender>
      </log4net>
...

Here's the code that initializes the logger:

protected void SendMessage()
    {
        log4net.Config.XmlConfigurator.Configure(); 
        ILog log = LogManager.GetLogger(typeof(Contact));
        ...
        log.Info("here we go!");
        log.Debug("debug afasf");
        ...
     }

It doesn't work, no matter what I seem to do. I am referencing the 'log4net.dll' correctly, and by debugging the application I can see that the log object is getting initiated properly. This is an asp.net 3.5 framework web project. Any ideas/suggestions?

I thought originally this error may be due to a file write permission constraint, but that doesn't seem to be the case (or so I think).

回答1:

I found the answer: I needed the requirePermission="false" tag in my web.config's configuration seciton.

<configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" **requirePermission="false"**/>
</configSections>


回答2:

As far as I can see you are missing an appender for root:

<root>
  <level value="ALL" />
  <appender-ref ref="RollingFileAppender" />
</root>


回答3:

I had to call fileAppender.ActivateOptions() to get it logging



回答4:

Is it possible to run Debug View on the webserver?

If so, you may be able to see if log4net is reporting any errors (such as an access error or a error reading the configuration file)