我使用TraceSource类来登录我的.NET项目。
然而,我从来不清楚的一点是,TraceEvent
方法中id
参数的意图是什么。目前,我总是把它设置为0。
但它的预期或典型有用用途是什么?
我可以想到几个可能性:
TraceEventType.(Start|Stop|Suspend|Resume|Transfer)
枚举值; 答案 0 :(得分:6)
我问自己同样的问题,我在任何Microsoft文档中都没有找到任何澄清这一点的内容。 我找到的是一篇由微软MVP撰写的文章,Richard Grimes: "The id parameter is whatever you choose it to be, there is no compulsion that a particular ID is associated with a particular format message." 在所有例子中,他使用0作为id参数。
在MSDN文章中,我看到它使用随机,没有提供任何其他信息。 我相信只要您保持相同的代码约定,您就可以在阅读日志时以任何方式使用它们。如果你想使用接受id参数的SourceFilter.ShouldTrace方法,那么之后在跟踪过滤中它可能会很有用。
我用它来描述错误类型,如果我有错误,或者使用0表示其他任何内容。
答案 1 :(得分:4)
据我在文档中看到,它并非专门用于一个目的。我认为你可以使用自己的逻辑跟踪事件。 ShouldTrace()
上的SourceFilter
方法采用匹配的id
参数,因此您也可以使用它来确定哪些事件或事件类型可以去哪里。
就个人而言,当我使用TraceSource
(事实上并不多,最近才发现它)时,我会用它来跟踪事件类型或类别。在一个应用程序中,我已经使用了另一个日志记录方法的事件类型的枚举,其值为Debug,Info,Warn,Error,Fatal,因此我将其转换为int
并将其用作{{1这有助于稍后过滤,所以我可以过滤掉我感兴趣的级别之下的任何东西,以消除痕迹。
另一种可能性是您可以使用不同的值来关联应用程序的不同部分,因此数据访问= 1,用户帐户= 2,产品逻辑= 3,通知= 4,UI = 5等。再次,您可以然后用它来过滤追踪到你正在看的东西的类型。
或者,你可以(如你的建议)使用不同的id
值来表示不同的事件类型,因此您可以像错误代码一样使用它们,以便(例如)在您看到id
时你知道无法建立数据库连接,或者其他什么。
使用id
参数的内容并不特别重要,只要:
一种可能性是,您可以拥有一个管理事件id
的集中式类,并根据某种输入提供值,以确保整个应用程序使用相同的id
同样的事情。