Как отправлять уведомления по электронной почте с slf4j / log4j2?

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

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

pom.xml импорт slf4j из maven

и наш файл log4j2.xml выглядит так:

файл log4j2.xml, содержащий приложение smtp

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

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

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

3 ответа

Решение

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

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

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

<Configuration status="debug"...

В вашем log4j.xml

Попробуйте настроить его с помощью Mail 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="myemail_id@example.com" />
    <param name="SMTPPassword" value="mypassword" />
    <param name="From" value="fromemail_id@example.com" />
    <param name="To" value="to_emailid@example.com" />
    <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>

Другие вопросы по тегам