如何在 SQL Server 的 log4net 配置中使用存储过程进行日志记录

2023-11-27

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

我使用的是 SQL Server 2008,我的附加程序配置如下所示:

<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 在线配置示例页面:

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 SQL Server 的 log4net 配置中使用存储过程进行日志记录 的相关文章

随机推荐

  • jQuery UI 对话框阻止 Google Chrome 中的窗口滚动条 [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我在使用 jQuery UI 对话框时遇到问题 当我在 jQuery 对话框中打开照片时
  • 英特尔 Edison MRAA 模块不工作

    我最近下载了 Intel XDK IOT 版本并使用了 LED 引脚 13 闪烁示例 然后我将程序上传到爱迪生上 但它出现了一些错误 其中之一是找不到 MRAA 模块 附带的示例代码是 main js var mraa new requir
  • Clojure,合并两个地图数组

    我有两个地图数组 1st is a 1 b 2 d 6 a 2 b 2 a 7 b 7 2nd is a 3 c 3 e 9 y 7 a 2 b 6 c 8 取决于的值a即 如果它在第二个数组中匹配 则 第二个地图 应与 第一个地图 合并
  • 如果测试没有足够的 python 覆盖率,如何让 travis 失败

    如果我的测试没有足够的覆盖率 例如 通常我使用以下 travis 配置条目运行测试 script coverage run source mytestmodule setup py test 根据这个link 如果您添加 fail unde
  • iOS 12 上的 PWA 不再与 Safari 共享 Service Worker 缓存?

    对于 iOS 11 上的 PWA 我们通过将登录详细信息存储在 Service Worker Web 缓存中来解决在 Safari 中打开的外部第三方登录问题 这在 iOS 12 中不再有效 在撰写本文时处于测试版 我认为这肯定是因为 PW
  • 使用 JavaScript eval 解析 JSON

    问题 我正在使用 eval 解析来自我的 WebMethod 之一的 JSON 返回值 我不想添加jquery json 因为传输量已经相当大了 所以我用eval解析JSON返回值 现在有传言说这是不安全的 为什么 没有人可以修改 JSOn
  • ld:找不到 -lrt 的库

    我正在尝试运行一个为 Ubuntu 创建且适用于 Mac OS 的项目 当我执行 make 时 出现以下错误 ld library not found for lrt clang error linker command failed wi
  • 我可以在项目/解决方案级别设置 Option Explicit 和 Option Strict 吗?

    我真的很喜欢 VB NET 提供的编码速度 但我不喜欢忘记声明变量类型 函数返回类型等的可能性 这就是我在每个类中使用的原因 Option Explicit On Option Strict On 有没有办法在项目 解决方案级别定义这两个选
  • gridview 将 dropdownlist 绑定到 List>

    我的数据库中有许多表保存对键值对的引用 电话号码类型 1 Home 2 Work 3 移动 4 Fax etc 所以我有一个类型表 当它们在其他表中使用时 它们引用 int 值作为外键 当我把它们拉出来时 我一直将它们存储为keyvalue
  • 如何有效地对数据库中的继承进行建模?

    在数据库中建模继承的最佳实践是什么 有什么权衡 例如可查询性 我对 SQL Server 和 NET 最感兴趣 但我也想了解其他平台如何解决这个问题 有多种方法可以对数据库中的继承进行建模 您选择哪个取决于您的需求 以下是一些选项 每类型表
  • 为什么在具有多个接口的对象中实现 QueryInterface() 时需要显式向上转换()

    假设我有一个实现两个或多个 COM 接口的类 class CMyClass public IInterface1 public IInterface2 我看到的几乎每个文档都表明 当我为 IUnknown 实现 QueryInterface
  • 从html文本中关闭库dom节点

    我有一个 html 文本 例如 div class a span 1 span div 2 div div 闭包库中是否有函数可以获取这样的字符串作为输入并返回 DOM 树以插入到文档中 Closure库提供的功能goog dom safe
  • 将 HtmlDocument.DomDocument 转换为字符串

    如何将 HtmlDocument DomDocument 转换为字符串 这个例子有点复杂 但是 假设你有一个名为Form1 带有一个名为的 WebBrowser 控件webBrowser1 变量content将包含形成文档的标记 priva
  • 如何使用单个replaceAll找到Java中两个字符串共有的字符?

    所以假设我有 String s 1479K String t 459LP 我想回来 String commonChars 49 两个字符串之间的公共字符 显然 可以使用如下标准循环来完成 String commonChars for i 0
  • 如何在 Android 中以编程方式添加联系人?

    我已经尝试过 但未添加联系人 ContentResolver cr this getContentResolver ContentValues cv new ContentValues cv put ContactsContract Com
  • Git合并忽略空格[重复]

    这个问题在这里已经有答案了 可能的重复 git 空格问题 我怎样才能设置不报告纯粹由于合并时的空格而导致的冲突 如下所示 lt lt lt lt lt lt lt HEAD open RESDBFILE lt this day result
  • SCTP 和 webrtc

    我看到 SCTP 将用于从 Chrome 31 开始的数据通道 并且根据这个 google group thread 基于 RTP 的正式通道有时将在 2014 年 2 月被弃用 https groups google com forum
  • 如何使用 etrace 和动态库来按时间顺序跟踪 C++ 中的函数调用?

    背景 我有一个大型模拟工具 我需要了解它的逻辑行为 为了做到这一点 如果我有函数调用的时间顺序 我会得到最多的帮助 作为一个最小的工作示例 我在网上找到了很多工具 比如Cyg分析器 and etrace 我在寻找解决方案时变得非常痛苦 以至
  • 如何修改传递给自定义 CMake 目标的环境变量?

    也许我错过了一些明显的东西 但我似乎无法弄清楚如何显式设置通过启动的进程可以看到的环境变量add custom target 我尝试了以下方法 set ENV PATH C Some Path ENV PATH add custom tar
  • 如何在 SQL Server 的 log4net 配置中使用存储过程进行日志记录

    我该如何更新commandText以及存储过程的参数部分 以便我可以通过 log4net 将错误记录到 SQL Server 中 我使用的是 SQL Server 2008 我的附加程序配置如下所示