这是config的配置:
  <appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">
      <bufferSize value="2"/>
      <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
      <connectionString value="data source=localhost;initial catalog=数据库名称;integrated security=false;persist security info=True;User ID=用户名;Password=密码"/>
      <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>
    <logger name="LogToMsSqlServer">
      <level value="ALL"/>
      <appender-ref ref="AdoNetAppender"/>
    </logger>

解决方案 »

  1.   

    数据库建表: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
    )
      

  2.   

    我这里是针对sql server的,其实log4net还支持很多数据库,如MS Access,Oracle9i,Oracle8i,IBM DB2,SQLite等,你可以去看看它的帮助文档。不过这里有一点要注意:对于其中的<buffersize value=100>是指当log信息达到100条时, log信息就会被写到数据库中,如果设置value=2时,当有两条log信息时,信息并没有被写到数据库中,要到第三条log信息产生时,这三条log信息才被写到数据中,继续有新的log信息生成时也是同样的情况。