2010-04-08 6 views
1

У меня есть консольное приложение в Visual studio. У меня есть файл log4net с smtp appender в моем файле app.config. Я установил переменную среды в свой код (т. Е. Мой адрес электронной почты) и попытался ссылаться на эту переменную среды для отправки электронной почты. Однако log4net, похоже, не читает это значение при запуске приложения.Переменная окружения не читается?

Мой log4net:

<?xml version="1.0" encoding="utf-8" ?> 
<Configuration> 
    <configSections> 
     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> 
    </configSections> 
    <log4net> 
     <appender name="smtp" type="log4net.Appender.SmtpAppender"> 
      <param name="to" value="${EmailAddress}" /> 
      <param name="from" value="[email protected]" /> 
      <param name="subject" value="testing app" /> 
      <param name="smtpHost" value="<smtp host name>" /> 
      <param name="bufferSize" value="1" /> 
      <param name="lossy" value="false" /> 
      <param name="Threshold" value="ERROR"/> 
      <layout type="log4net.Layout.PatternLayout"> 
       <conversionPattern value="%d{ISO8601} [%t] [%-5p] %c - %m%n" /> 
      </layout> 
     </appender> 
     <root> 
      <priority value="ALL" /> 
      <appender-ref ref="smtp" />    
     </root> 
    </log4net> 
</Configuration> 

В моей консольного приложения, я установил переменную окружения что-то вроде этого:

Environment.SetEnvironmentVariable("EmailAddress", "[email protected]", EnvironmentVariableTarget.Process); 

Кто-нибудь знает, как я могу заставить его работать? Спасибо.

+0

Запустите приложение с помощью log4net [внутренняя отладка] (http://log4net.sourceforge.net/release/1.2.0.30316/doc/manual/faq.html#internalDebug) и разместите соответствующие разделы, где создается log4net это приложение. Добавьте 'debug =" true "' в тег ''. –

+0

Создает ли log4net какой-либо вывод в этом приложении? –

+0

Попробуйте [синтаксис сильных параметров] (http://logging.apache.org/log4net/release/manual/configuration.html#Compact Parameter Syntax). Он позволяет писать такие параметры, как '' –

ответ

0

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

${AppData} 

Я использовал percent стиль для доступа к специальным папкам, и она работает. Попробуйте это с помощью вашей настраиваемой переменной окружения.

%AppData% 

Но, я должен спросить, почему вы кладете в «To:» адрес электронной почты в переменной окружения? Не можете ли вы использовать что-то более современное, как встроенный log4net Contexts?