Enterprise Library 5.0 - 将自定义标记添加到 TextFormatter

2023-12-29

我创建了一个自定义异常,其中包含与我们的应用程序相关的数据。我想确保在引发异常时记录这些数据并将其记录到事件日志中。

我尝试创建一个正在调用的自定义 TextFormatter,但不确定如何访问当前异常,以便我可以将自定义信息添加到日志条目中。

有一些我不明白的事情,希望能得到有关将自定义标记(和数据)添加到 Enterprise Library 5.0 TextFormatters 的任何帮助。

谢谢, ...马克


你可以延长TextFormatter。我认为问题在于TextFormatter格式化一个LogEntry:

public override string Format(
    LogEntry log
)

因此,您需要将自定义数据放入 LogEntry 中。 (我认为这就是你的问题所要问的。)

另一种(我认为更简单)的方法是使用ExtendedProperties of LogEntry。如果您使用异常处理块 (EHAB) 来记录异常,那么您可以将所有自定义信息添加到IDictionary Data财产。在运行时,数据字典的内容被添加到ExtendedProperties。然后可以通过使用格式化程序定义中的标记来记录特定属性。

e.g.

public class MyException : Exception
{
    private string myCustomProperty;

    public string MyCustomProperty
    {
         get
         {
             return myCustomProperty;
         }
         set
         {
             myCustomProperty = value;
             Data["MyCustomProperty"] = value;
         }
    }
}

然后您可以使用 EHAB 和日志记录策略来处理异常:

ExceptionPolicy.HandleException(ex, "Logging Exception Handler");

在您的模板中添加如下内容:

我的自定义属性:{keyvalue(MyCustomProperty)}

然后,这将记录您的自定义属性。

如果您不使用 EHAB 那么您可以not在异常类中设置数据值,然后创建小帮助器类以将自定义属性添加到ExtendedProperties:

public void LogException(Exception ex)
{
    LogEntry logEntry = new LogEntry();
    //...
    logEntry.ExtendedProperties.Add("MyCustomProperty", ex.MyCustomProperty);

    Logger.Write(logEntry);
}

如果自定义异常属性的日志记录对您来说是一个普遍问题,那么您可以将所有自定义属性添加到数据字典中,然后在帮助器方法中将所有数据键/值对复制到 ExtendedProperties。

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

Enterprise Library 5.0 - 将自定义标记添加到 TextFormatter 的相关文章

随机推荐

  • C# 中的八进制等效项

    在C语言中 八进制数可以这样写 0在数字之前 例如 int i 012 Equals 10 in decimal 我通过放置找到了 C 中十六进制的等价物0x在数字之前 例如 int i 0xA Equals 10 in decimal 现
  • probe_success 和 up 之间的区别?

    有什么区别probe success and up 我看到各种示例 其中基于其中任何一个来完成警报 例如站点关闭 实例关闭 我错过了什么吗 up指示 Prometheus 是否可以与目标 例如黑盒导出器 对话并成功抓取目标 probe su
  • 如何将 bcp 实用程序与 oracle dB 或任何其他更好的选项一起使用

    我有一个 csv 文件 必须批量导入到 oracle dB 我之前正在研究其他 sybase dB 引擎 因此我有一个示例脚本 其中包含它的环境设置 现在我必须在 oracle dB 中执行该过程 所以第一行应该是什么我知道其余的其他参数
  • 使用 colspan 将粘性位置固定在 上?

    这好像是sticky不起作用 td with colspan 有办法解决吗 body font family Lucida Grande div width 500px height 200px overflow scroll td th
  • 是否有编译器开关可以关闭 C# 中对泛型的支持?

    我正在与一位合作伙伴合作 尝试将复杂的驱动程序从 NET 平台迁移到 NET MicroFramework 问题是 NET MF 不支持泛型 当我们尝试构建应用程序时 最后一个 链接 操作会退出并显示错误代码 CLR E PARSER UN
  • Eclipse:哪些 HTML 和 Javascript 插件?

    您使用哪些插件在 Eclipse 3 5 中编辑 带语法突出显示 HTML 和 Javascript Spket http spket com 是一个很棒的 JavaScript 插件 对于 HTML 我通常只使用附带的默认 XML HTM
  • jQuery 同位素插件水平滚动

    fiddle http jsfiddle net xKjUv 19 只是想让它水平滚动文档示例 http isotope metafizzy co docs layout modes html 我不知道为什么它不起作用 container
  • Apache Spark SQL 需要很长时间才能计算 Cassandra 中的十亿行吗?

    我有以下代码 我按如下方式调用 Spark Shell spark shell conf spark cassandra connection host 170 99 99 134 executor memory 15G executor
  • 无法使用 SSMS 通过 Windows 身份验证连接到本地 SQL Server

    我正在尝试使用 SSMS 使用 Windows 身份验证登录到安装在 Windows 7 上的本地 SQL Server 2005 我尝试使用各种服务器名称 例如 localhost SQL ANANTH PC etc 当我尝试时出现此错误
  • Wordpress ACF - 日期格式

    我使用日期字段将日期呈现为 11 15 2014 但我还想在页面的其他位置显示日期 例如 2014 年 11 月 15 日 是否可以以两种不同的格式呈现日期 您可以使用get field然后您可以将日期格式更改为您想要的任何格式 date
  • ES6 Promise 中的数据只有在我点击它之后才会呈现在页面上?

    我在我的应用程序中使用 Ionic 并连接到 Firebase 来提取数据 我在工厂中创建了一个承诺 将数据拉下来 并认为一旦完成 它应该在屏幕上呈现数据 但在触摸屏幕之前我什么也得不到 我没有收到任何错误 数据确实出现了 Factory
  • jpa 实体 bean 的默认范围是什么?它有什么帮助?

    我的项目中的所有实体 bean 看起来都是这样的 我想知道对实体使用 scope prototype 的意义是什么 Component Scope prototype Entity Table name SOME BEAN SOME CON
  • 如何在iPhone锁屏状态下开始播放音乐

    我在用UILocalNotification如果应用程序未运行 则提醒用户MPMusicPlayerController播放 iPod 音乐和MPMoviePlayerController播放广播流 url 根据苹果文档 如果 iPhone
  • 以编程方式使用尺寸类别

    我 希望 观看了所有相关的 WWDC2014 会议视频并阅读了文档 所以这个问题主要是为了证实我的怀疑 但请赐教 我想做的是使用自动布局为视图添加动画效果 这本身并不是问题 但这些动画的端点随着不同的方向而变化 我想我也许可以使用尺寸类来自
  • 无法配置 Firebase InstanceID

    您好 我正在尝试在我的应用程序中包含 firebase 并遵循文档 当我尝试进行 google 登录时 出现无法配置 Firebase InstanceID 错误 请建议如何克服此错误 有两件事需要检查 希望其中一项能为您解决 确保您的捆绑
  • 无法从 Xcode 运行 Instruments

    我最近升级到 Snow Leopard 从那以后我很难运行 Instrument 来从 Xcode 检测我的应用程序 录制 按钮将变灰 并且什么也不会发生 Xcode 的控制台中也没有消息告诉我出了什么问题 我曾经能够将其附加到进程或从仪器
  • 如何使用 jQuery 在 IE 中附加样式表?

    大家好 我只是想创建一个插件 我需要它对用户友好 所以我想append the 标签上的head加载我的插件时用户页面的一部分 它适用于所有其他浏览器 不确定 IE9 IE7 和 IE6 但不适用于 IE8 我不知道我的插件出了什么问题 所
  • 在 CakePHP 中重写 php 应用程序

    因此 我很想使用 php 框架重写我的应用程序 因为我认为这会让人们更容易参与 并改进应用程序的设计 CakePHP 看起来是最好的 PHP Web 框架 有人有这方面的经验吗 从手动编写 PHP 到使用框架 我应该考虑哪些注意事项 不取决
  • 写入 Mac OS X 10.7 中的“~/Library/Application Support”文件夹

    我可以使用 NSFileManager 在 Mac OS X 10 5 和 10 6 中的 Library Application Support 中创建 XYZ 文件夹 然而 在 10 7 中 它显示 您无权将 XYZ 保存在文件夹 应用
  • Enterprise Library 5.0 - 将自定义标记添加到 TextFormatter

    我创建了一个自定义异常 其中包含与我们的应用程序相关的数据 我想确保在引发异常时记录这些数据并将其记录到事件日志中 我尝试创建一个正在调用的自定义 TextFormatter 但不确定如何访问当前异常 以便我可以将自定义信息添加到日志条目中