Переменная окружения не читается? - PullRequest
1 голос
/ 08 апреля 2010

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

Мой лог4нет:

<?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 голосов
/ 15 июня 2011

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

${AppData}

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

%AppData%

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

...