Log4j2: SMTPAppender не отправляет письма с ошибочным или фатальным уровнем
Я обнаружил некоторые проблемы с SMTPAppender в log4j2. Всякий раз, когда регистрировать события с уровнемerror
или жеfatal
созданыбез иметь событие с уровнемinfo
до того, как письмо не будет отправлено и фатальное событие исчезнет.
Вот мой файл конфигурации log4j2 (log4j2.xml) и небольшая программа (LogTest.java) для воспроизведения проблемы:
[email protected]
[email protected]
smtp.example.com
25
smtp
me
secret
Я использовал эту небольшую программу, чтобы воспроизвести проблему (LogTest.java):
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
class LogTest
{
private static Logger logger=LogManager.getLogger("LogTest");
public void testlogger()
{
/* --> uncomment to enable first mail
logger.info("test info 1");
*/
logger.fatal("test fatal 1");
/* --> uncomment to enable second mail
logger.info("test info 2");
*/
logger.fatal("test fatal 2");
}
public static void main(String[] args)
{
LogTest app=new LogTest();
app.testlogger();
}
}
Если вы раскомментируете две отмеченные позиции, все будет работать так, как задумано: отправляются две почты, каждая из которых содержит фатальное событие и предыдущее информационное событие. Дополнительно на стандартный вывод выводятся 4 события:
test info 1
test fatal 1
test info 2
test fatal 2
Теперь, если вы только активируете / раскомментируете вторую позицию - второе письмо (fatal2) отправляется как положено (снова с предыдущим событием info2), но даже если первое фатальное событие печатается на стандартный вывод, почта съедена. Вывод выглядит следующим образом:
test fatal 1
test info 2
test fatal 2
Лично мне кажется, что я что-то не так и неправильно настроил log4j2 или это может быть ошибка.
Заранее благодарны за Вашу помощь.
* Jost
Замечания:
Для тестов я использовалlog4j2-beta7 скачано из проекта 'с сайта. Документацию можно найтиВот.