Как мы можем хранить сообщения log4j в списке утилит java

1

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

  • 0
    Почему Вы хотите это сделать, список, несомненно, заполнит вашу память до такой степени, что он сгенерирует исключение нехватки памяти. Не лучше ли разобрать и прочитать файл журнала?
Теги:
list
log4j
swt

1 ответ

2
Лучший ответ

В зависимости от используемого вами Appender вы можете, например, создать этот пользовательский Appender, который регулярно добавляет сообщение, а также кэширует его в списке:

import java.util.ArrayList;
import java.util.List;

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

public class MyRollingFileAppender extends RollingFileAppender {

    private List<LoggingEvent> events = new ArrayList<>();

    @Override
    public synchronized void doAppend(LoggingEvent event) {
        events.add(event);
        super.doAppend(event);
    }

    public synchronized List<LoggingEvent> getEvents() {
        List<LoggingEvent> clone = new ArrayList<>(events);
        events.clear();
        return clone;
    }

}
  • Вы можете, конечно, переопределить любой другой Appender, который вы хотите, а также зарегистрировать или "разблокировать" сообщение (событие)
  • 0
    Мне также нужно сохранить отметку времени внутри списка, когда сообщение журнала было помещено в список. Так как мы можем получить и вставить в список.
  • 0
    Класс LoggingEvent имеет метод long getTimeStamp (), который будет возвращать время регистрации сообщения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню