Настройте Log4Net так, чтобы он не использовал smtp appender при работе на определенной машине - PullRequest
5 голосов
/ 06 марта 2009

Я настраиваю SMPTAppender для отправки файлов журналов по электронной почте при возникновении ошибки в рабочем коде. На некоторых компьютерах, например на локальных тестовых компьютерах, я не хочу отправлять электронную почту.

Я пытался использовать переменную среды COMPUTERNAME в фильтре свойств, но это не сработало:

<filter type="log4net.Filter.PropertyFilter">
  <Key value="COMPUTERNAME" />
  <StringToMatch value="myComputerName" />
  <Accept value="false" />
</filter>

Я использовал имя_компьютера в приложении для работы с файлами следующим образом:

<file value="${HOMEDRIVE}\\loggingDirectory\\AppLogFile.${COMPUTERNAME}.log" />

Это тоже не сработало (и я не ожидал):

<filter type="log4net.Filter.PropertyFilter">
  <Key value="${COMPUTERNAME}" />
  <StringToMatch value="myComputerName" />
  <Accept value="false" />
</filter>

Есть ли способ использовать переменные среды в фильтре свойств? Другие предложения приветствуются.

1 Ответ

5 голосов
/ 16 апреля 2009

Вы используете неправильное значение ключа. Коллекция LoggingEvent.Properties заполняется свойством HostName, которое имеет подпись «log4net: HostName».

Ваш фильтр должен выглядеть следующим образом:

<filter type="log4net.Filter.PropertyFilter">
    <Key value="log4net:HostName" />
    <StringToMatch value="computerToExclude" />
    <AcceptOnMatch value="false" />
</filter>

Обратите внимание также на использование AcceptOnMatch, а не Accept.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...