Разработка веб-сервисов WCF с использованием C #, VS2010 и .NET 4.0
Я бы хотел программно изменить некоторые настройки, хранящиеся в моем файле app.config.
Я не хочу редактировать или обновлять фактический файл app.config, я хочу переопределить некоторые атрибуты после запуска приложения.
То, что я хотел бы изменить, - это уровень трассировки в моем клиентском приложении WCF.
Если в файле app.config уровень трассировки обычно отсутствует, то для поддержки клиента я бы хотел разрешить клиенту изменить это значение на предупреждение, критическое, подробное или любое другое.
Я не хочу изменять файл app.confg, ни один уровень трассировки не подходит для нормальной работы. Только когда клиент отправляет задачу поддержки и получает представление о том, что происходит, нужно заставить приложение генерировать трассировку с уровнем, установленным на некоторый уровень.
Как можно программно изменить подобные вещи после запуска приложения.
Я видел несколько статей о том, как программно настроить конечную точку с нуля. Однако я не видел этого для раздела systems.diagnostics.
Я видел статьи о том, как изменить файл app.config, используя редактор wcf или вручную.
Что я не видел, так это то, как можно сохранить то, что определяет app.config, но затем, как, когда нужно, программно изменить или переопределить настройки, содержащиеся в файле ap.config.
В следующем файле app.config у меня есть
<system.diagnostics>
<sources>
<source name="NewSource" switchValue="Error,ActivityTracing">
<listeners>
<add type="System.Diagnostics.DefaultTraceListener" name="Default">
<filter type="" />
</add>
</listeners>
</source>
<source name="System.ServiceModel.MessageLogging" switchValue="Warning, ActivityTracing">
<listeners>
<add type="System.Diagnostics.DefaultTraceListener" name="Default">
<filter type="" />
</add>
<add name="ServiceModelMessageLoggingListener">
<filter type="" />
</add>
</listeners>
</source>
<source name="System.ServiceModel" switchValue="Warning, ActivityTracing"
propagateActivity="true">
<listeners>
<add type="System.Diagnostics.DefaultTraceListener" name="Default">
<filter type="" />
</add>
<add name="ServiceModelTraceListener">
<filter type="" />
</add>
</listeners>
</source>
</sources>
<sharedListeners>
<add initializeData="d:\sandbox\wcf\helloworld\helloworldservice\helloclient\app_messages.svclog"
type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
name="ServiceModelMessageLoggingListener" traceOutputOptions="DateTime, Timestamp, ProcessId, ThreadId">
<filter type="" />
</add>
<add initializeData="d:\sandbox\wcf\helloworld\helloworldservice\helloclient\app_tracelog.svclog"
type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
name="ServiceModelTraceListener" traceOutputOptions="DateTime, Timestamp, ProcessId, ThreadId">
<filter type="" />
</add>
</sharedListeners>
</system.diagnostics>
Я бы хотел, чтобы пользователь дополнительно настраивал атрибут switchvalue на что-то отличное от предупреждения по умолчанию. Я мог бы хотеть отключить это, изменяя это ни к чему или увеличивать содержание, изменяя это на подробный и т. Д.
Я также мог бы захотеть изменить место записи трассировки в значениях атрибута initializeData .
Возможно ли это? Должно быть много раз, когда нужно программно переопределить атрибуты различных элементов, когда значения по умолчанию в app.config обычно в порядке, но в некоторых случаях нужно переопределить эти значения программно, не сохраняя изменений в app.config.
Любая помощь очень ценится.