2015-12-25 2 views
0

Я использую log4net для регистрации ошибок. Работа с файлами работает, теперь я хочу, чтобы ошибка также отправлялась по почте. Но я не могу заставить его работать. Вот мой конфигурационный файл:Отправка почты при возникновении ошибки

<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender"> 
    <to value="[email protected]" /> 
    <from value="[email protected]" /> 
    <subject value="Test - Error" /> 
    <smtpHost value="smtp.gmail.com" /> 
    <authentication value="Basic" /> 
    <port value="587" /> 
    <username value="MyUsername" /> 
    <password value="MyPassword" /> 
    <bufferSize value="1" /> 
    <lossy value="true" /> 
    <threshold value="ERROR"/> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="[%date{dd MMM yyyy HH:mm:ss,fff}] %level %thread %logger - %message%newline" /> 
    </layout> 
</appender> 
<root> 
    <appender-ref ref="SmtpAppender" /> 
</root> 

Я видел, что кто-то использует <EnableSsl value="true" /> также, но когда я копирую его в Appender теге он говорит, что он является недействительным элементом. Кстати, когда я отправляю другие письма через код C#, я устанавливаю значение EnableSsl в true.

+0

Какую версию log4net вы используете? –

+0

@YeldarKurmangaliyev 2.0.5 – Aleksa

ответ

2

Самый простой способ отладки, что происходит, чтобы включить log4net внутреннюю регистрацию:

<appSettings> 
    <add key="log4net.Internal.Debug" value="true"/> 
</appSettings> 

Это будет печатать на консоли и системы System.Diagnostics.Trace любые потенциальные проблемы с конфигурацией Appender. Что я могу видеть, как проблемы в том, что вы указали lossy, но не добавить оценщик:

<lossy value="true" /> 
<evaluator type="log4net.Core.LevelEvaluator,log4net"> 
    <threshold value="ERROR" /> 
</evaluator> 

В основном вам нужно поставить настройку <threshold>, что вы в настоящее время есть в разделе оценщика.

Также вы должны добавить переключатель <EnableSsl value="true" />, потому что это требуется gmail.

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

+0

Эта проблема с потерями и оценщиком была проблемой. – Aleksa