2010-04-08 110 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内置的更现代的东西吗?