为C#库定义TraceSource日志记录配置

本文关键字:日志 记录 配置 TraceSource 定义 | 更新日期: 2023-09-27 18:00:33

我正在运送几个库,并计划使用TraceSource在其中实现一些诊断跟踪。我还想允许用户连接/配置他们自己的侦听器、交换机、过滤器等

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

我一直在考虑以下几点:有一个logging.config文件,该文件随库一起提供,并向案例显示我的库使用但不包含任何侦听器的源。接下来,在我的库中,我将读取用户的logging.config和app.config,并使用app.config文件中定义的任何侦听器覆盖logging.org。这听起来像OK模式吗?

为C#库定义TraceSource日志记录配置

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

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

据我所知,system.diagnostics的设置只允许一个system.diagonstics部分,而不允许合并两个部分。这可能与特设日志记录系统有关。(我推测这是关于System.Diagnostic的跟踪库的,因为你有一个TraceSource.标签

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

如果库的使用者足够老练,想要查看第三方库的跟踪,他们也可以根据自己的需要配置自己的系统。您只需要以某种方式(通过文档)让用户知道您正在使用system.Diagnostics以及TraceSource的名称。

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