首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TraceSource名称是如何在.NET程序中解析的?

TraceSource名称是如何在.NET程序中解析的?
EN

Stack Overflow用户
提问于 2012-12-13 21:28:32
回答 2查看 1.3K关注 0票数 6

TraceSource类的MSDN文档有一个示例,说明app.config文件如何列出TraceSource实例的信息:

http://msdn.microsoft.com/en-us/library/system.diagnostics.tracesource.aspx

但是,没有关于TraceSource值在哪里存储的信息-- stored...where是否存储了现有的TraceSource对象?什么时候构造它们(编辑:它们意味着已配置的实例)?TraceSource对象如何知道在创建TraceSource对象时如何返回命名实例(编辑:应该配置实例)而不是新实例?可以在不使用反射的情况下找到现有TraceSource对象的列表吗?

EN

回答 2

Stack Overflow用户

发布于 2012-12-13 23:07:01

TraceSource类保存了一个私有的源列表。但是,除了TraceSource类本身之外,任何人都无法访问它。

.config文件部分用于为跟踪源配置侦听器。因此,在代码中创建TraceSource时,它使用在构造函数中传递的名称,然后查看.config文件,以查看应该自动添加或删除哪些侦听器。

因此,代码创建一个源,.config文件对其进行配置。相反,.config文件不能创建源。

票数 2
EN

Stack Overflow用户

发布于 2012-12-13 23:07:11

存储的TraceSource对象?

在静态集合中(因此每个应用程序域都有一个副本),但是在.NET版本中,它们被存储在弱引用中,如果创建了太多的引用,就会导致内存泄漏。如果我没记错的话,单一版本没有这个问题。

要了解更多细节,我建议阅读源代码-- Mono源代码更容易找到,因为它们是正式开放的。

它们是什么时候建造的?

当正在编写跟踪的应用程序写入TraceSource源代码=新的TraceSource()时;

TraceSource对象如何知道如何在创建TraceSource对象时返回命名实例而不是新实例?

不确定。

可以在不使用反射的情况下找到现有TraceSource对象的列表吗?

过去可以用RedGate反射器来完成这个任务。System.Net和WCF库使用Systems.Diagnostics,但很少有其他库使用。API中没有一种方法只对当前跟踪源的运行时进行交互,这将是一个很好的特性。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13868782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档