当前位置:Gxlcms > 数据库问题 > 也用 Log4Net 之将日志记录到数据库的配置 (一)

也用 Log4Net 之将日志记录到数据库的配置 (一)

时间:2021-07-01 10:21:17 帮助过:2人阅读

<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
  </configSections>


  <log4net>
    <root>
      <level value="INFO"></level>
      <appender-ref ref="AdoNetAppender_SQL"/>
    </root>
    
    <logger name="WebLogger">
      <level value="INFO"/>
      <appender-ref ref="ADONetAppender" />

    </logger>

    <logger name="WebTest">
      <level value="INFO"/>
      <appender-ref ref="ADONetTest" />

    </logger>

    <!--SQL数据库-->
    <appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
      
      <bufferSize value="10"/>
      
      <!-- SQL数据源 ,本地安装SQL客户端-->
      <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
      
      <!-- SQL连接字符串-->
      <connectionString value="data source=SHUJU-BAILING\SQLEXPRESS;initial catalog=LogSys;integrated security=False;persist security info=True;User ID=sa;Password=123456" />
      
      <commandText value="INSERT INTO Log ([RecordTime],[LevelName],[Message],[Exception],[UserID]) VALUES (@log_date, @log_level, @message, @exception, @UserID)"/>
     
      <parameter>
        <parameterName value="@log_date"/>
        <dbType value="DateTime"/>
        <layout type="log4net.Layout.RawTimeStampLayout"/>
      </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="@exception"/>
        <dbType value="String"/>
        <size value="2000"/>
        <layout type="log4net.Layout.ExceptionLayout"/>
      </parameter>

      <parameter>
        <parameterName value="@message"/>
        <dbType value="String"/>
        <size value="4000"/>
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%message"/>
        </layout>
      </parameter>
      
      <!--自定义成员 -->
      <parameter>
        <parameterName value="@UserID" />
        <dbType value="Int32" />
        
        <layout type="JJ.Data.LogCommon.CustomLayout">
          <conversionPattern value="%UserID" />
        </layout>
        
      </parameter>
      
    </appender>


    <!--SQL数据库-->
    <appender name="ADONetTest" type="log4net.Appender.ADONetAppender">

      <bufferSize value="10"/>

      <!-- SQL数据源 ,本地安装SQL客户端-->
      <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>

      <!-- SQL连接字符串-->
      <connectionString value="data source=SHUJU-BAILING\SQLEXPRESS;initial catalog=LogSys;integrated security=False;persist security info=True;User ID=sa;Password=123456" />

      <commandText value="INSERT INTO LogTest ([RecordTime],[LevelName],[Message],[Exception],[UserID]) VALUES (@log_date, @log_level, @message, @exception, @UserID)"/>

      <parameter>
        <parameterName value="@log_date"/>
        <dbType value="DateTime"/>
        <layout type="log4net.Layout.RawTimeStampLayout"/>
      </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="@exception"/>
        <dbType value="String"/>
        <size value="2000"/>
        <layout type="log4net.Layout.ExceptionLayout"/>
      </parameter>

      <parameter>
        <parameterName value="@message"/>
        <dbType value="String"/>
        <size value="4000"/>
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%message"/>
        </layout>
      </parameter>

      <!--自定义成员 -->
      <parameter>
        <parameterName value="@UserID" />
        <dbType value="Int32" />

        <layout type="JJ.Data.LogCommon.CustomLayout">
          <conversionPattern value="%UserID" />
        </layout>

      </parameter>

    </appender>
    
    <!--<root>
      <level value="DEBUG" />
      <appender-ref ref="ADONetAppender" />
      
    </root>-->

  </log4net>
  
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
  </startup>
  
</configuration>
技术分享

 

  这是一个非常完整的 Log4Net 的配置文件,细心的同学会发现,我配置了两张一模一样表,是的,这是我为了做测试用的,我想试试他能不能根据不同的业务需要将不同的日志分别记录到不同的表中(实验证明完全没有问题 )。

 

技术分享
<logger name="WebLogger">
   <level value="INFO"/>
   <appender-ref ref="ADONetAppender" />
</logger>

<logger name="WebTest">
   <level value="INFO"/>
   <appender-ref ref="ADONetTest" />
</logger>
技术分享

  

  上面的这段配置我想特别强调一下,Logger 配置接点告诉我们,日志信息将分别以ADONetAppender 和 ADONetTest的形式进行输出,而且这两种形式正是我们上面配置的两个表,你仔细观察 appender  配置节的 name 属性,哈哈,是不是一下子就明白了。其实如果我们真正的理解了 Log4Net 配置说明,其实 Log4Net 的使用也就自然而然的掌握了,其它的就是多看一下相应的API文档。

 

 

  好了,今天我们主要讲一下 Log4Net 将日志输入到数据库的配置文件,我们先理解一下,当然后台还是写代码的,我会在明天把后台代码整理和发表。因为一下字都写出来了有点晕,大家看着也晕,所以我们慢慢来写。

 

  就先写到这里,我是百灵,明天见。

也用 Log4Net 之将日志记录到数据库的配置 (一)

标签:

人气教程排行