2009-03-06 5 views
5

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

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

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

я использовал ComputerName в файле Appender так:

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

Это также (и я не ожидал этого):

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

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

ответ

5

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

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

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

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

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

  • Нет связанных вопросов^_^