我们有一个巨大的C#代码库,它使用.Net跟踪和自定义跟踪侦听器进行日志记录.我正在探索动态更改跟踪级别的选项(从警告到详细等).我希望有一种方法可以从跟踪侦听器更改跟踪级别,我可以修改自定义侦听器以更改跟踪源上的日志级别.但这似乎不可能.有没有一种简单的方法可以从跟踪侦听器中获取traceource对象(没有反射..)?我试图避免从TraceSource派生来实现动态跟踪级别,因为它将涉及大量的代码更改.有什么建议?
以下是我们追踪的典型方式:
TraceSource ts = new TraceSource("TestLogSource");
ts.TraceEvent(TraceEventType.Warning, 0, "warning message");
ts.TraceEvent(TraceEventType.Error, 0, "error message");
<system.diagnostics>
<sources>
<source name="TestLogSource" switchName="GlobalSwitch">
<listeners>
<add name="TestLog"/>
</listeners>
</source>
</sources>
<sharedListeners>
<add name="TestLog" initializeData="test.svclog" type="Library.RolloverXmlTraceListener, Library, Version=4.0.0.0, Culture=neutral, PublicKeyToken=1234.."/>
</sharedListeners>
<switches>
<add name="GlobalSwitch" value="Warning" />
</switches>
</system.diagnostics>
Run Code Online (Sandbox Code Playgroud)