Динамически меняйте уровень трассировки через обработчик трасс

У нас есть огромная C# кодовая база, которая использует .Net трассировку и пользовательский обработчик трассировки. Я изучаю возможность динамического изменения уровня трассировки (с Warning на Verbose и т.д.). Я надеялся, что есть способ изменить уровень трассировки с помощью трассировщика, и я мог бы изменить пользовательский приемник для изменения уровня журнала в источнике трассировки. Но это не кажется возможным. Есть ли простой способ получить исходный объект трассы от обработчика трасс (без отражения...)? Я пытаюсь избежать извлечения из 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>
7
задан Paramesh 1 September 2011 в 22:01
поделиться