log4net 使用存储过程实现复杂逻辑将日志记入数据库的实现

log4net是一个非常优秀和完善的第三方开源组件,网上讲log4net的各种配置以及使用的文章很多不必累述,今天记录一下工作中遇到的当将日志插入数据库中的动作不仅仅只是简单的 insert  log(message) values (@message))这么简单时,我们可能要用到存储过程,也就是CommandType的类型System.Data.CommandType.StoredProcedure,如何实现?

1、配置文件

<?xml version="1.0" encoding="utf-8" ?>

<configuration>

  <configSections>

    <section name="log4net"

    type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />

  </configSections>

  <log4net>

    <logger name="testLogger">
      <level value="DEBUG"/>
      <appender-ref ref="ADONetAppender" />
    </logger>

    <appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">

      <bufferSize value="1"/>
      <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
      <connectionString value="data source=mahuijun\sql2008;initial catalog=test;integrated security=False;persist security info=True;User ID=sa;Password=123456" />
      <!--<commandType value="System.Data.CommandType.StoredProcedure" /> -->
      <commandType value="4" />
      <commandText value="updatelog"/>
      <!--<commandText value="insert into log(message) values(@message)"/> -->

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

    </appender>
  
  </log4net>

</configuration>


2、测试代码很简单:

          

  log4net.Config.XmlConfigurator.Configure(new System.IO.FileInfo("..\\..\\cfg\\log4net.config"));
            ILog logger = LogManager.GetLogger(Assembly.GetCallingAssembly(), "testLogger");
            logger.Fatal("log4net");


3、数据库表结构及存储过程:

CREATE TABLE [log](
	[message] [nvarchar](50) NULL
) 


CREATE PROC [updatelog](
@message NVARCHAR(50)
) AS
INSERT INTO dbo.log 
        ( message )
VALUES  (
          @message  -- message - nvarchar(50)
          )

 这里说的简单点,尤其是存储过程,只是讲讲log4net使用存储过程怎么配置和使用。至于复杂的存储过程逻辑在具体应用中自己去实现吧。这里多说一句:如上CommandType的设置一定要注意,其value的值一定是要设置为4,而不是像注释掉的 System.Data.CommandType.StoredProcedure,否则会出现类型转化错误而无法记入数据库。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值