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

时间:2013-10-03 13:09:47

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

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

以下是我正在做的事情:

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

即使我将Tracer分配给变量,我也不会对它正在编写的日志条目产生任何影响。我也检查了TraceManager类,但它也与此无关。

我想要达到的目标如下:

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

提前致谢,

罗伯特

1 个答案:

答案 0 :(得分:2)

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

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

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