环境变量没有被读取?

时间:2010-04-08 03:26:23

标签: c# logging log4net

我在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="myapp@gmail.com" />
            <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", "testApp@gmail.com", EnvironmentVariableTarget.Process);

有谁知道我怎么能让它发挥作用? 感谢。

1 个答案:

答案 0 :(得分:0)

我看到log4net的旧release notes表示您使用带有货币符号和括号的环境变量。但我以前从未使用过这种风格。

${AppData}

我使用percent样式访问特殊文件夹,但它确实有用。使用自定义环境变量尝试这样做。

%AppData%

但是,我必须问你为什么要在环境变量中加入“To:”电子邮件地址?难道你不能使用像内置的log4net Contexts那样更现代的东西吗?