Log4J SMTP дайджест / агрегирование писем? - PullRequest
2 голосов
/ 23 августа 2010

У меня есть пакетное приложение JBOSS, которое иногда отправляет сотни писем в минуту на один и тот же адрес электронной почты с ошибками Log4J. Это вызывает проблемы с Gmail, поскольку в нем говорится, что мы слишком быстро отправляем электронные письма для этой учетной записи Gmail.

Так что мне было интересно, есть ли способ создать «дайджест» или «агрегированное» электронное письмо, которое помещает все журналы ошибок в 1 электронное письмо и отправляет его каждые 5 минут. Таким образом, каждые 5 минут мы можем получать большие электронные письма, но, по крайней мере, мы на самом деле получаем электронную почту, а не откладываем ее на часы и часы из-за того, что серверы Gmail отклоняют ее.

Я прочитал этот пост , который предлагал что-то об использовании оценщика для этого, но я не мог видеть, как это настраивается в файле конфигурации Log4J xml. Казалось также, что в любом случае невозможно «переварить» все журналы в 1 электронное письмо.

Кто-нибудь делал это раньше? Или знаете, возможно ли это?

Ответы [ 2 ]

4 голосов
/ 30 августа 2010

С http://www.manning -sandbox.com / thread.jspa? ThreadID = 9913

установить это свойство

log4j.appender.myMail.evaluatorClass = com.mydomain.example.MyEvaluator

Теперь вам нужно создать оценщикКлассифицируйте и реализуйте интерфейс org.apache.log4j.spi.TriggeringEventEvaluator и поместите этот класс в путь, по которому log4j может получить к нему доступ.

//Example TriggeringEventEvaluator impl

package com.mydomain.example;

import org.apache.log4j.spi.LoggingEvent;
import org.apache.log4j.spi.TriggeringEventEvaluator;

public class MyEvaluator implements TriggeringEventEvaluator {

    public boolean isTriggeringEvent(LoggingEvent event) { 
        return true; 
    }

} 

Вы должны написать логику оценщика в этом методе.

0 голосов
/ 03 декабря 2015

Я создал бесплатное пригодное для log4j2 решение с ExtendedSmtpAppender.
(Если вы все еще используете log4j 1.x, просто замените log4j-1.x.jar на log4j-1.2-api-2.x.jar - и log4j-core-2.x.jar + log4j-api-2.x.jar конечно.)

Вы получаете его из Maven Central как de.it-tw:log4j2-extras (для этого требуется Java 7+ и log4j 2.8 +).
Если вы ограниченыв Java 6 (и, следовательно, log4j 2.3), затем используйте de.it-tw:log4j2-Java6-extras

Дополнительно см. проект GitLab: https://gitlab.com/thiesw/log4j2-extras (или https://gitlab.com/thiesw/log4j2-Java6-extras)


[СТАРЫЙ текст:
Если вы используете log4j2, см. Ответ на другую проблему переполнения стека: https://stackoverflow.com/a/34072704/5074004

Или обратитесь непосредственно к моему внешнему, но общедоступному решению, представленному вhttps://issues.apache.org/jira/browse/LOG4J2-1192
]

...