了解Trace侦听器

时间:2016-02-01 17:05:41

标签: asp.net vb.net trace system.diagnostics tracelistener

我最近刚刚发现了追踪的力量(不知道为什么花了这么长时间)。理论和实践并不是我所知道的.Net中可用的资源。传统上我只会记录我需要调查的程序部分,直到我得到任何问题或困惑的答案。截至最近这项任务并没有给我足够的信息,而且由于我的应用程序现在太大,所以太繁琐了。关于这一点的资源并不多,所以我有几个问题:

  1. 如果我将自己的跟踪侦听器源添加到trace.listeners集合中,那么跟踪侦听器会在我的应用程序的web.config中启用跟踪时收到trace.axd页面中可以看到的跟踪信息

  2. 如果是这样,我将如何创建可以接收该输入的侦听器?我已经创建了自己的类来实现跟踪侦听器类,除了我自己以外,我似乎无法记录任何其他输入?我误解了什么吗?

  3. 如果有另一种方法可以逐行记录我的应用程序而无需自己记录日志,那将非常有帮助。谢谢。

1 个答案:

答案 0 :(得分:1)

  

如果我将自己的跟踪侦听器源添加到trace.listeners   集合将跟踪侦听器接收到的跟踪信息   可以在trace.axd页面中看到启用跟踪时   我的应用程序的web.config?

您将能够看到写入Trace的任何内容。写入trace.axd的跟踪与普通的TraceSource,TraceListener等有点不同。最大的区别是它使用Trace对象,这是.NET 1.1的跟踪方式。在.NET 2.0&后来,引入了名为TraceSources。

如果在Web配置中注册TraceSwitch,TraceSource和TraceListener,则可以启用侦听任何知道其名称的TraceSource,WCF库就是一个示例。

其他地方记录了TraceSource和TraceListener并且切换得比我更好,例如http://blog.stephencleary.com/2010/12/simple-and-easy-tracing-in-net.htmlhttps://msdn.microsoft.com/en-us/library/ms228984(v=vs.110).aspx

  

如果是这样,我将如何创建可以接收的侦听器   那输入?我创建了自己的类来实现跟踪   监听器类,我似乎无法记录任何其他输入   除了我自己的?

您可以从继承ConsoleLogListener或TextWriterTraceListener开始。该库有许多工具可用于处理System.Diagnostics Trace的粗糙边缘。 https://essentialdiagnostics.codeplex.com/

(因为内置库有粗糙的边缘,期望看到一些人告诉你使用其他一些日志库,有很多,但只有System.Diagnostics是内置的并且始终可用)

  

如果有另一种方法可以逐行记录我的应用程序   必须放置我自己的日志记录,这将非常有用。

这需要"代码编织"或面向方面编程,您可以使用工具重新编译应用程序,并在任何地方或在找到某个属性的位置添加记录或跟踪等内容。 PostSharp就是这样一个应用程序。内存配置文件可以逐行显示,作为显示应用程序在大部分时间内花费的副产品的副产品。