【问题标题】:How to use stored proc inside log4net configuration for SQL Server for logging如何在 SQL Server 的 log4net 配置中使用存储过程进行日志记录
【发布时间】:2012-04-05 18:35:58
【问题描述】:

如何更新存储过程的commandText 和参数部分,以便我可以通过 log4net 将错误记录到 SQL Server 中?

我使用的是 SQL Server 2008,我的 appender 配置如下所示:

<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>

【问题讨论】:

    标签: asp.net sql-server-2008 stored-procedures logging log4net


    【解决方案1】:

    试用:

     <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:

    CommandText 是准备好的语句或存储过程。每个参数到 使用其名称指定准备好的语句或存储过程, 数据库类型和呈现参数值的布局。

    【讨论】:

      猜你喜欢
      • 2016-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-21
      • 1970-01-01
      • 2013-02-25
      • 1970-01-01
      相关资源
      最近更新 更多