Настройте Log4Net так, чтобы он не использовал smtp appender при работе на определенной машине
-
03-07-2019 - |
Вопрос
Я настраиваю SMPTAppender для отправки файлов журналов по электронной почте при возникновении ошибки в рабочем коде. На некоторых компьютерах, например на локальных тестовых компьютерах, я не хочу отправлять электронную почту.
Я пытался использовать переменную среды COMPUTERNAME в фильтре свойств, но это не сработало:
<filter type="log4net.Filter.PropertyFilter">
<Key value="COMPUTERNAME" />
<StringToMatch value="myComputerName" />
<Accept value="false" />
</filter>
Я использовал ComputerName в приложении для работы с файлами следующим образом:
<file value="${HOMEDRIVE}\\loggingDirectory\\AppLogFile.${COMPUTERNAME}.log" />
Это также не сработало (и я этого не ожидал):
<filter type="log4net.Filter.PropertyFilter">
<Key value="${COMPUTERNAME}" />
<StringToMatch value="myComputerName" />
<Accept value="false" />
</filter>
Есть ли способ использовать переменные среды в фильтре свойств? Другие предложения приветствуются.
Решение
Вы используете неверное значение ключа. Коллекция LoggingEvent.Properties заполняется свойством HostName, которое имеет " log4net: HostName " подпись. Р>
Ваш фильтр должен выглядеть следующим образом:
<filter type="log4net.Filter.PropertyFilter">
<Key value="log4net:HostName" />
<StringToMatch value="computerToExclude" />
<AcceptOnMatch value="false" />
</filter>
Обратите внимание также на использование AcceptOnMatch, а не Accept.