package org.jabref.logic.logging; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import org.apache.logging.log4j.core.LogEvent; import org.apache.logging.log4j.core.impl.MutableLogEvent; /** * This class is used for storing and archiving all message output of JabRef as log events. * To listen to changes on the stored logs one can bind to the {@code messagesProperty}. */ public class LogMessages { private static LogMessages instance = new LogMessages(); private final ObservableList<LogEvent> messages = FXCollections.observableArrayList(); private LogMessages() { } public static LogMessages getInstance() { return instance; } public ObservableList<LogEvent> getMessages() { return FXCollections.unmodifiableObservableList(messages); } public void add(LogEvent event) { // We need to make a copy as instances of LogEvent are reused by log4j MutableLogEvent copy = new MutableLogEvent(); copy.initFrom(event); messages.add(copy); } public void clear() { messages.clear(); } }