2

I have created an MVC Web API project that uses log4net to log to database. My problem is that nothing is actually logged to the database table. When stepping through code, I get noe exceptions and IsInfoEnabled is true (as well as all the other IsEnabled properties). I have turned on debugging for log4net, but in the log4net.txt file there are no errors or exceptions either. I'm starting to get a little frustrated here. Help is much appreciated.

My web.config file

<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
  </configSections>
  <connectionStrings>
  </connectionStrings>
  <appSettings>
    <add key="log4net.Internal.Debug" value="true"/>
  </appSettings>

  <log4net>
    <root>
      <level value="DEBUG" />
      <appender-ref ref="ADONetAppender" />
    </root>
    <appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
      <bufferSize value="100" />
      <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      <connectionString value="server=myserver; uid=username; pwd=password; database=db" />
      <commandText value="INSERT INTO Log ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
      <parameter>
        <parameterName value="@log_date"/>
        <dbType value="DateTime"/>
        <layout type="log4net.Layout.RawTimeStampLayout"/>
      </parameter>
      <parameter>
        <parameterName value="@thread"/>
        <dbType value="String"/>
        <size value="255"/>
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%thread"/>
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@log_level"/>
        <dbType value="String"/>
        <size value="50"/>
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%level"/>
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@logger"/>
        <dbType value="String"/>
        <size value="255"/>
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%logger"/>
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@message"/>
        <dbType value="String"/>
        <size value="4000"/>
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%message"/>
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@exception"/>
        <dbType value="String"/>
        <size value="2000"/>
        <layout type="log4net.Layout.ExceptionLayout"/>
      </parameter>
    </appender>
  </log4net>

  <system.diagnostics>
    <trace autoflush="true">
      <listeners>
        <add
            name="textWriterTraceListener"
            type="System.Diagnostics.TextWriterTraceListener"
            initializeData="C:\temp\log4net.txt" />
      </listeners>
    </trace>
  </system.diagnostics>

</configuration>

My database table:

CREATE TABLE [dbo].[Log] (

    [Id] [int] IDENTITY (1, 1) NOT NULL,

    [Date] [datetime] NOT NULL,

    [Thread] [varchar] (255) NOT NULL,

    [Level] [varchar] (50) NOT NULL,

    [Logger] [varchar] (255) NOT NULL,

    [Message] [varchar] (4000) NOT NULL,

    [Exception] [varchar] (2000) NULL

)

In Global.asax

protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();

           ....

            log4net.Config.XmlConfigurator.Configure();
            var log = LogManager.GetLogger("logger");
            log.Info("application start");
        }
Pokechu22
  • 4,984
  • 9
  • 37
  • 62
Karoline Brynildsen
  • 3,598
  • 6
  • 35
  • 45

2 Answers2

3

And as usual I find the answer right after posting a question on StackOverflow.

Log4net not inserting into the database?

I changed the <bufferSize value="100" /> to <bufferSize value="1" />, and it writes to the database every time.

Community
  • 1
  • 1
Karoline Brynildsen
  • 3,598
  • 6
  • 35
  • 45
1

Please set Level value to "ALL" in root element in log4net section