2

我正在开发几个库,并计划使用 TraceSource 在其中实现一些诊断跟踪。我还希望允许用户附加/配置他们自己的监听器、开关、过滤器等。

由于库不附带配置文件,是否有任何现有的模式可以巧妙地完成这一点?

我一直在考虑以下问题:拥有一个库附带的 logging.config 文件,并展示我的库使用但不包含任何侦听器的源。接下来,在我的库中,我将从用户的 logging.config 和 app.config 中读取,并使用 app.config 文件中定义的任何侦听器覆盖 logging.config。这听起来像一个好的模式吗?

4

1 回答 1

0

app.config(或 web.config)的 System.Diagnostic 部分允许指向外部文件,例如

<system.diagnostics configSource="system.diagnostics.config" />

据我所知,system.diagnostics 设置为只允许一个 system.diagnostics 部分,而不是两个合并的部分。使用 ad hoc 日志系统可能是可能的。(我假设这是关于 System.Diagnostic 的跟踪库,因为您有一个 TraceSource 标记。

因此,您将在库中附带一些具有不同侦听器场景的 .config 文件(可能是控制台跟踪或文件跟踪的预配置部分)。用户只需将 configSource 添加到他们的 app.config 即可查看跟踪,这是一个典型的场景 - 临时添加跟踪以处理特定问题。

如果库的使用者足够复杂,想要查看 3rd 方库的踪迹,他们可能也可以按照他们认为合适的方式配置自己的 system.dignostics 部分,您只需要以某种方式(通过文档)让用户知道您正在使用 System.Diagnostics 以及 TraceSource 名称是什么。

例如,.NET 框架在一些命名空间(System.ServiceModel 和 System.Networking)中使用 TraceSource,但除非您运行反编译器,否则您可能永远不会意识到此类跟踪存在并且可以由库用户激活。换句话说,库中的 System.Diagnostic 跟踪存在可发现性问题。

于 2014-05-01T00:08:09.397 回答