如何使用存储过程log4net的内部配置为SQL Server日志记录 [英] How to use stored proc inside log4net configuration for SQL Server for logging

查看:154
本文介绍了如何使用存储过程log4net的内部配置为SQL Server日志记录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我如何更新的CommandText 和参数部分的存储过程,这样我可以通过log4net的?

记录错误到SQL Server

我使用SQL Server 2008和我的附加器的配置是这样的:

 <追加程序名称=ADONetAppenderTYPE =log4net.Appender.ADONetAppender>
  < BUFFERSIZE值=100/>
  < connectionType值=System.Data.SqlClient.SqlConnection,System.Data这,版本= 2.0.0.0,文化=中性公钥= b77a5c561934e089/>
  <连接字符串值=服务器= MYSERVER; UID = MYUSER; PWD =为mypass;数据库= MYDB/>
  <的CommandText
    值=INSERT INTO日志([日期],[主题],[等级],[记录器],[信息],[例外])VALUES(@log_date,@thread,@log_level,@Logger,@message,抛出)    />
  <&参数GT;
    <参数名称值=@ LOG_DATE/>
    < D​​BTYPE值=日期时间/>
    <布局类型=log4net.Layout.RawTimeStampLayout/>
  < /参数>
  <&参数GT;
    <参数名称值=@丝/>
    < D​​BTYPE值=字符串/> <大小值=255/>
    <布局类型=log4net.Layout.PatternLayout>
      < conversionPattern值=%线程/>
    < /布局>
  < /参数>
  <&参数GT;
    <参数名称值=@ LOG_LEVEL/>
    < D​​BTYPE值=字符串/>
    <大小值=50/>
    <布局类型=log4net.Layout.PatternLayout>
      < conversionPattern值=%的水平/>
    < /布局>
  < /参数>
  <&参数GT;
    <参数名称值=@记录器/>
    < D​​BTYPE值=字符串/>
    <大小值=255/>
    <布局类型=log4net.Layout.PatternLayout>
      < conversionPattern值=%记录器/>
    < /布局>
  < /参数>
  <&参数GT;
    <参数名称值=@消息/>
    < D​​BTYPE值=字符串/>
    <大小值=4000/>
    <布局类型=log4net.Layout.PatternLayout>
      < conversionPattern值=%消息/>
    < /布局>
  < /参数>
  <&参数GT;
    <参数名称值=@异常/>
    < D​​BTYPE值=字符串/>
    <大小值=2000/>
    <布局类型=log4net.Layout.ExceptionLayout/>
  < /参数>
< /附加器>


解决方案

试用:

< CommandText中值=StorProcName/>
 <命令类型值=StoredProcedure的/> <&参数GT;
    <参数名称值=@ LOG_DATE/>
    < D​​BTYPE值=日期时间/>
    <布局类型=log4net.Layout.RawTimeStampLayout/>
 < /参数>
 ......所有参数...

log4net的在线配置示例页面


  


  的CommandText要么是prepared语句或存储过程。每个参数的
  prepared语句或存储过程与它的名字规定,
  数据库的类型和呈现为参数的值的布局。


How do I update the commandText and parameter section for stored procedure so that I could log the errors into SQL Server via log4net?

I am using SQL Server 2008, and my appender configuration looks like this:

<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=MYUSER; pwd=MYPASS; database=MYDB"/> 
  <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>

解决方案

Try out:

 <commandText value="StorProcName" />
 <commandType value="StoredProcedure" />

 <parameter>
    <parameterName value="@log_date" />
    <dbType value="DateTime" />
    <layout type="log4net.Layout.RawTimeStampLayout" />
 </parameter>
 ... all parameters ...

log4net online config examples page:

The CommandText is either a prepared statement or a stored procedure. Each parameter to the prepared statement or stored procedure is specified with its name, database type and a layout that renders the value for the parameter.

这篇关于如何使用存储过程log4net的内部配置为SQL Server日志记录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆