我认为 System.Diagnostics 中没有任何东西可以提供开箱即用的功能(我特别考虑的是不必在 app.config 文件中显式配置每个单独的 TraceSource 的能力)。但是,如果您不介意编写一点代码,您可以编写自己的包装器来提供“分层 TraceSource”功能。看看 Castle 在他们的 TraceLogger 中做了什么:
https://github.com/castleproject/Core/blob/master/src/Castle.Core/Core/Logging/TraceLogger.cs
假设您有以下类(和关联的命名空间):
Namespace1.Namespace1_1.Class1
Namespace1.Namespace1_1.Class2
Namespace1.Namespace1_2.Class3
Namespace2.Namespace2_1.Class4
Namespace2.Namespace2_2.Class5
TraceSource
Castle 的实现将允许您使用完整的类名或使用类名的子集(从命名空间末尾开始) 来配置(在您的 app.config 中)。
因此,例如,您可以通过指定“ ”作为名称来配置所有TraceSources
来自Namespace1.Namespace1_1
某个级别的记录。在您的代码中,如果您创建一个(或者,实际上是创建一个包装的 TraceSource),其类的完整名称为or ,则会在为.Namespace1.Namespace1_1
TraceSource
TraceSource
Class1
Class2
TraceSource
Namespace1.Namespace1_1
尝试查看 Castle 的 TraceLogger 实现,看看你是否可以让类似的东西为你工作。