c# - 如何向 Enterprise Library Tracer 添加扩展属性?

标签 c# asp.net-mvc-4 logging enterprise-library enterprise-library-6

我正在使用 Enterprise Library 6 在 ASP.NET MVC 4 Web 应用程序上实现日志记录和用户跟踪。我正在使用跟踪器来实现此目的,并将 LogEntries 写入数据库。这工作正常,但现在,我想向 Tracer 条目的 ExtendedProperties 字段中添加一些额外的信息。我可以在普通 LogEntry 对象上执行此操作,但似乎无法在 Tracer 上执行此操作。 有什么办法可以实现这一点吗?

这就是我正在做的事情:

using(traceManager.StartTrace(LogCategory.UserTracing.ToString(), activityId))
{
Doit();
}

即使我将跟踪器分配给一个变量,我也不能对其正在写入的日志条目产生任何影响。我也检查了 TraceManager 类,但它也与此没有任何关系。

我想要实现的目标如下:

LogEntry e = new LogEntry();
e.ExtendedProperties.Add("key", "value");

提前致谢,

罗伯特

最佳答案

Tracer 类不会公开创建的 LogEntry,因此无法实现您想要的开箱即用的效果。

添加扩展属性支持的最简单方法可能是获取 Tracer 的源代码并创建您自己的接受扩展属性的自定义实现。您还可以创建一个使用自定义 Tracer 的自定义 TraceManager

另请注意,开箱即用的 FormattedDatabaseTraceListener 不会记录扩展属性,因此您需要创建一个自定义跟踪监听器来执行此操作(您可以在 Enterprise Library Sample Projects 找到一种方法)。

关于c# - 如何向 Enterprise Library Tracer 添加扩展属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19160087/

相关文章:

c# - 我如何检查http链接中是否有错误,然后继续?

c# - 如何: Define a Self Referenced Type Property with Reflection Emit in c#

javascript - FluentAutomation 和查找元素同级

asp.net-mvc - 保留 ASP.NET MVC Controller 名称?

maven - 如何在没有 Antrun 插件的情况下在 Maven 中回显?

c# - 适当的 Guid 映射。 hibernate

c# - 我的着色器在桌面上工作,但屏幕在 Android 上变黑

asp.net-mvc-4 - 如何在mvc布局中添加标志?

android - 您通常如何标记日志条目? (安卓)

Java:是否可以(在运行时)获取 future 方法调用的源文件名和行号?