我在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);
有谁知道我怎么能让它发挥作用? 感谢。
答案 0 :(得分:0)
我看到log4net的旧release notes表示您使用带有货币符号和括号的环境变量。但我以前从未使用过这种风格。
${AppData}
我使用percent样式访问特殊文件夹,但它确实有用。使用自定义环境变量尝试这样做。
%AppData%
但是,我必须问你为什么要在环境变量中加入“To:”电子邮件地址?难道你不能使用像内置的log4net Contexts那样更现代的东西吗?