2010-04-08 161 views
1

我在Visual Studio中有一個控制檯應用程序。我有我的app.config文件中的smtp appender log4net的東西。我在我的代碼中設置了環境變量(即我的電子郵件地址)並嘗試引用此環境變量來發送電子郵件。然而,當應用程序運行時,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所建立的相關部分這個appender。將'debug =「true」'添加到''標籤。 – 2011-06-15 05:26:41

+0

log4net在此應用程序中是否產生任何輸出? – 2011-06-15 05:29:22

+0

也請嘗試[compact parameter syntax](http://logging.apache.org/log4net/release/manual/configuration.html#Compact Parameter Syntax)。它可以讓你寫''從value =「[email protected]」/>'的參數 – 2011-06-15 21:20:41

回答

0

對於log4net,我看到一箇舊的release notes,說您使用帶有貨幣符號和括號的環境變量。但我從未使用過這種風格。

${AppData} 

我用percent風格訪問特殊文件夾,它的工作原理。用你的自定義環境變量來試試它。

%AppData% 

但是,我必須要問,爲什麼你把一個「To:」在環境變量中的電子郵件地址?難道你不能使用像log4net Contexts內置的更現代的東西嗎?