Вы можете создать свой собственный appender, реализовав интерфейс Appender
, предоставляемый log4j.
http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Appender.html
Это был бы один подход. Другой вариант - использовать существующий appender, а затем написать код, который отслеживает журнал. Например, вы можете войти в базу данных, а затем написать процесс, который отслеживает записи журнала в базе данных и создает мета-события на основе того, что он видит.
Это зависит больше всего от того, что вам удобно. Один вопрос, с которым вам придется столкнуться, это как посмотреть в журнале, чтобы создать ваши мета-события. Либо вам придется накапливать события в вашем приложении, либо сохранять их где-то, к чему вы можете обратиться для создания своих мета-событий. Проблема с их накоплением заключается в том, что если вы остановите и начнете свой процесс, вам придется либо сбрасывать их куда-нибудь, чтобы они возвращались, либо запускаться заново при каждом перезапуске процесса.
Например, допустим, я хочу создавать запись журнала каждый 10-й раз, когда выдается NullPointerException
. Если у меня есть какие-либо записи в базе данных, каждый раз, когда создается NPE, я запускаю запрос, чтобы посмотреть, сколько NPE было сгенерировано с тех пор, как я в последний раз создавал для них запись журнала. Если я просто подсчитываю их в памяти каждый раз, когда один из них выбрасывается, если я перезапускаю приложение после того, как выброшено 5, если я не сохраню это число, я потеряю счет.