2014-11-12 2 views
1

Хотелось бы получить ошибки приложения на моей почте. Ошибка регистрации в работе файла.Отправка сообщения об ошибке по электронной почте

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

Это мой app.config;

<configuration> 
    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> 
    </configSections> 

    <log4net debug="false"> <!-- RollingLogFileAppender--> 
    <appender name="RollingFileMessages" type="log4net.Appender.RollingFileAppender"> 
     <file value="logs/CSVReader.log" /> 
     <appendToFile value="true" /> 
     <maximumFileSize value="1MB"/> 
     <maxSizeRollBackups value="9"/>  
     <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/> 
     <param name="StaticLogFileName" value="true"/>  
     <param name="RollingStyle" value="Date"/> 
     <param name="DatePattern" value="yyyy-MM-dd"/>  
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%date [%thread] %-5level %type.%method – %message%newline"/> 
     </layout> 
    </appender> 

    <appender name="SmtpAppender" type="log4net.Appender.SmtpAppender,log4net"> 
     <threshold value="ALL" /> 
     <to value="[email protected]" /> 
     <from value="[email protected]" /> 
     <subject value="log4net err msg - My ASP.NET app" /> 
     <smtpHost value="smtp.gmail.com" /> 
     <port value="587"/> 
     <authentication value="Basic" /> 
     <username value="[email protected]"/> 
     <password value="passw1"/> 
     <EnableSsl value="true" /> 
     <bufferSize value="1" /> 
     <lossy value="true" /> 
     <layout type="log4net.Layout.PatternLayout,log4net"> 
     <conversionPattern value="%property{log4net:HostName} :: %level :: %message 
     %newlineLogger: %logger%newlineThread: %thread%newlineDate: 
     %date%newlineNDC: %property{NDC}%newline%newline" /> 
     </layout> 
    </appender> 

    <logger name="WebAppLog"> 
     <level value="ALL" /> 
     <appender-ref ref="RollingFileMessages" /> 
     <appender-ref ref="SmtpAppender" /> 
    </logger> 
    </log4net> 
</configuration> 

В моем приложении:

public static readonly ILog log = LogManager.GetLogger("WebAppLog"); 
log4net.Config.XmlConfigurator.Configure(); 

log.Info(" Form1 : Info "); 
log.Warn(" Form1 : Warn "); 
log.Debug(" Form1: Debug "); 

Что я делаю неправильно? Пожалуйста, дайте мне какое-нибудь предложение? Большое спасибо.

+1

Вы хотите отправлять электронные письма в режиме реального времени или регистрироваться ежедневно, тогда отправить пакетное письмо? В реальном времени всегда звучит потрясающе ... до тех пор, пока в один прекрасный день, когда ошибка не будет найдена ... в цикле ..., который попадает под большое количество пользователей ... в этот момент вы случайно придумали механизм спама;) На всякий случай я бы настоятельно рекомендовал ввести дроссели и размерные крышки с «дня 1». – scunliffe

+0

Я думаю, что он мог отправлять электронную почту в день. Я сознаю, что электронная почта может быть в папке спама, но пока это не проблема. Также я проверю спам. Теперь я хочу отправить почту. но это не сработает. У вас есть идеи? – Jola

+0

Я не беспокоюсь о том, что вы приземляетесь в папке со спамом, беспокойство заключается в том, что если 100 или 1000 писем будут созданы, вы можете * по существу * спамить себя до смерти потоком писем. Если вы отправляете достаточно писем, интернет-провайдеры также потенциально считают «массовую электронную почту» как «спам-поведение» и могут дросселировать и/или блокировать доставку (или, что еще хуже, поставить «отправителя» в черный список) – scunliffe

ответ

1

Ваш smtp appender установлен как Lossy = true, который предотвратит отправку событий; установка Lossy на appender отменяет решение о том, нужно ли регистрировать событие для оценщика, который вам нужно настроить. По умолчанию никакой сконфигурированный оценщик не означает, что ни одно сообщение не регистрируется.

Либо добавьте оценщика (у вас есть только LevelEvaluator по умолчанию в vanilla log4net), либо установите для параметра lossy значение false. См. this blog post для получения дополнительной информации о конфигурации с потерями (что очень хорошо может быть тем, что вы хотите, т. Е. Получать почту только при возникновении ошибок)

+0

Большое спасибо! Ваши комментарии решают мою проблему! Оно работает!!! – Jola

+0

Если это поможет, не стесняйтесь отмечать этот ответ как правильный. В стороне, я бы рекомендовал внимательно прочитать связанное сообщение в блоге, он содержит очень хороший пример того, как настроить журналы в производственной среде. – samy

+0

У меня есть еще один вопрос. Как я могу скрыть имя пользователя и пароль по электронной почте. Я пытаюсь использовать aspnet_reggiis.exe, но он работает неправильно. Может быть, есть некоторые возможности установить его программно? – Jola

Смежные вопросы