我正在使用Enterprise Library 6在ASP.NET MVC 4 Web应用程序上实现日志记录和用户跟踪。我正在使用Tracers实现此目的,并且正在将LogEntries写入数据库。这可以正常工作,但是现在,我想向“跟踪器”条目中的“扩展属性”字段中添加一些额外信息。我可以在普通的LogEntry对象上执行此操作,但似乎无法在Tracer上执行此操作。
有什么办法可以做到这一点?
这是我在做什么:
using(traceManager.StartTrace(LogCategory.UserTracing.ToString(), activityId))
{
Doit();
}
即使将Tracer分配给变量,也不会对其正在写入的日志条目产生任何影响。我也检查了TraceManager类,但是它与此没有任何关系。
我想实现的目标如下:
LogEntry e = new LogEntry();
e.ExtendedProperties.Add("key", "value");
提前致谢,
罗伯特
最佳答案
Tracer
类不会公开所创建的LogEntry
,因此无法实现现成的目标。
添加扩展属性支持的最简单方法可能是获取Tracer
的源代码并创建自己的接受扩展属性的自定义实现。您也可以创建使用自定义TraceManager
的自定义Tracer
。
另请注意,开箱即用的FormattedDatabaseTraceListener
不会记录扩展属性,因此您需要创建一个自定义跟踪侦听器来执行此操作(您可以在Enterprise Library Sample Projects中找到一种方法)。