2013-10-01 4 views
2

Я изучил другие вопросы, которые схожи, и я попытался найти ответ, но мой вопрос по-прежнему остается без ответа. Я до сих пор не знаком с тем, как это работает, так что несите меня.Как отправлять уведомления по электронной почте с помощью slf4j/log4j2?

Наш специалист pom.xml использует зависимость SLF4J:

pom.xml importing slf4j from using maven

и наш файл log4j2.xml выглядит следующим образом:

log4j2.xml file containing smtp appender

Я только добавил это к вышесказанному log4j2.xml файл <SMTP name="Mail" ...> </SMTP> и ниже в файле i добавлено <logger name="com.path.class1" ...> <appender ...> </logger>

Но по какой-то причине, когда я вызываю log.error («сообщение об ошибке»), мое письмо не отправляется мне. Я знаю, что хост smtp работает, потому что он используется в .NET-сервисе. Сервер smtp не требует никаких учетных данных для его использования. Я знаю, что мой вызов log.error находится в правильном каталоге и пути к файлу. Я попытался установить порт, но это не имело никакого значения. Как мне заставить получать уведомления по электронной почте?

Я даже попробовал mailAppender, но это не сработало: enter image description here

ответ

0

Так что, наконец, я смог получить уведомления SMTP. Это log4j2.xml файл, который сделал его работу:

enter image description here

+0

Интересно, он будет работать без имени пользователя и пароля. Я пробовал то же самое, но не смог отправить почту. –

0

В вашем log4j.xml

Попробуйте его настройки с почтовым Appender

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

<?xml version="1.0" encoding="UTF-8"?> 

<appender name="mailAppender" class="org.apache.log4j.net.SMTPAppender"> 
    <param name="BufferSize" value="50" /> 
    <param name="SMTPHost" value="smtp.mail.example.com" /> 
    <param name="SMTPPort" value="587" /> 
    <param name="SMTPUsername" value="[email protected]" /> 
    <param name="SMTPPassword" value="mypassword" /> 
    <param name="From" value="[email protected]" /> 
    <param name="To" value="[email protected]" /> 
    <param name="Subject" value="Testing Log4j mail notification" /> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="[%d{ISO8601}]%n%n%-5p%n%n%c%n%n%m%n%n" /> 
    </layout> 
    <filter class="org.apache.log4j.varia.LevelRangeFilter"> 
     <param name="LevelMin" value="error" /> 
     <param name="LevelMax" value="fatal" /> 
    </filter> 
</appender> 

<root> 
    <priority value="info" /> 
    <appender-ref ref="mailAppender" /> 
</root> 

+0

Я попробовал ваше предложение и редактировал свой вопрос выше объяснить, что я сделал. –

+0

Вы можете отправлять письма с помощью сервера smtp, предоставленного в конфигурации, через сервер, на котором запущен ваш slf4j? Я также рекомендую этот ответ http://stackoverflow.com/questions/18945084/slf4j-logback-refer-to-appender-that-is-not-referenced-from-any-logger – neo7

+0

Решение @Remko Popma даст вам точный slf4j ошибка тоже. – neo7

0

Вы не можете смешивать log4j2 и log4j-1.x appenders. Приложение Log4J2 SMTP должно работать.

Я подозреваю, что произошла ошибка. У вас есть java mail jars в пути к классам? Можете ли вы изменить начало вашей конфигурации log4j2.xml, чтобы она печатала отладочные сообщения на консоль?

<Configuration status="debug"... 
Смежные вопросы