2013-10-08 5 views
0

Я использую nlog с файлом nlog.config.Отключение/включение правил nlog во время выполнения

Теперь у меня есть цель, которая регистрирует необработанное исключение в WebService

<target xsi:type="WebService" name="webservice" 
    url="http://server.tld/services/errorreporting/" 
    methodName="" 
    namespace="" 
    protocol="HttpPost" 
> 

.... 

</target> 

И правило:

<logger name="*" minlevel="Fatal" writeTo="webservice" /> 

Теперь я wan't, чтобы позволить пользователю решить, хочет ли он использовать эта особенность. Приложение является приложением winforms, и пользователь видит диалог для необработанных исключений. Теперь я хочу добавить флажок errorreporting. Только если он установлен, я хочу войти в мой веб-сервис.

Моя идея - использовать фильтр для моего правила с настраиваемым условием. nlog docs претензии:

New condition functions are easy to add; just create an ordinary function and mark it with the [ConditionMethod] attribute.

Так что я мог бы написать функцию

public static bool ErrorReportingEnabled() 
{ 
    return Properties.Settings.Default.ErrorReportingEnabled; 
} 

, но я не нашел каких-либо ссылок на то, как определить эту функцию в моем фильтре.

+0

https://github.com/Emudofus/BehaviorIsManaged/blob/master/Librairies/NLog/Conditions/ConditionMethods.cs – Vladimir

+0

Вместо того, чтобы читать настройки из вашего конфигурационного файла nlog, я попытался бы изменить правило регистрации во время выполнения, Я надеюсь, что [этот вопрос] (http://stackoverflow.com/questions/10302561/reconfiguring-nlog-programmatically) даст вам некоторое представление –

ответ

0

В конце концов я просто изменил мое правило

<logger name="WebServiceLogger" minlevel="Fatal" writeTo="webservice" /> 

и в моем коде, я просто создать регистратор с этим именем.

Смежные вопросы