添加用于使用企业库记录数据的其他信息

时间:2013-07-08 06:18:27

标签: c# enterprise-library

我已经配置了企业库将数据记录到数据库中,一切正常。这就是thentnt日志记录信息的样子:

  

时间戳:2013年6月19日上午7:10:01

     

类别:eConnect例外

     

优先级:0

     

EventId:100

     

严重性:错误

     

标题:企业库异常处理

     

机器:ISDC30517

     

App Domain:/ LM / W3SVC / 23 / ROOT-4-130160992152908413

     

ProcessId:8808

     

进程名称:C:\ Program Files(x86)\ IIS Express \ iisexpress.exe

     

主题名称:

     

Win32 ThreadId:8952

     

扩展属性:

这是在myment记录我的异常的代码:

public void LogException(Exception exception)
{
   ExceptionPolicy.HandleException(exception, "GeneralExceptionPolicy");
}

我已经运行的默认脚本为Enterprise Library生成数据库表以记录数据,为我提到的每个属性生成一个新列。

现在我还希望能够添加其他信息。目前我正在考虑添加获得此例外的当前用户的用户名。

我搜索了很多,而且我似乎无法找到可以帮助我的东西。如何在记录的消息中添加其他信息?

1 个答案:

答案 0 :(得分:2)

您可以将其他信息添加到Exception.Data属性中。这些值将添加到LogEntry的ExtendedProperties中。然后,您可以配置formatter以在formattedMessage字符串中输出特定的扩展属性键。请参阅:Exception.Data info is missing in EntLib log

这可能是最简单的方法,但信息被隐藏在数据库表的字符串中。

另一种方法是将数据直接添加到数据库中。这将涉及对现成的数据库模式和存储过程的更改以及自定义跟踪侦听器的创建。您可以在Enterprise Library Sample Projects页面找到两种不同的设计:

  • 具有自定义异常处理程序的扩展属性跟踪侦听器包含一个自定义跟踪侦听器,它将扩展属性记录到单独的扩展属性表中,该表允许写入所有扩展属性。

  • 自定义数据库跟踪侦听器示例使用CustomLogEntry将一些CustomData写入Log表的自定义数据库列。