diff --git a/convex-gui/src/main/java/convex/gui/manager/windows/peer/ObserverPanel.java b/convex-gui/src/main/java/convex/gui/manager/windows/peer/ObserverPanel.java index 6bdb66038..03b10c59b 100644 --- a/convex-gui/src/main/java/convex/gui/manager/windows/peer/ObserverPanel.java +++ b/convex-gui/src/main/java/convex/gui/manager/windows/peer/ObserverPanel.java @@ -7,6 +7,7 @@ import javax.swing.JPanel; import javax.swing.JRadioButton; +import convex.observer.LogObserver; import convex.observer.StrimziKafka; import convex.peer.Server; import convex.peer.TransactionHandler; @@ -26,6 +27,7 @@ public ObserverPanel(Server server) { this.setLayout(new MigLayout("wrap 2")); + add(new JLabel("Transactions"),"span 2"); JRadioButton noneButton=addButton("Transactions",new JLabel("None"),()->{ server.getTransactionHandler().setRequestObserver(null); server.getTransactionHandler().setResponseObserver(null); @@ -42,6 +44,17 @@ public ObserverPanel(Server server) { }); add(strmButton); add(new JLabel("Strimzi")); + + JRadioButton tlogButton=addButton("Transactions",new JLabel("Logs"),()->{ + TransactionHandler th=server.getTransactionHandler(); + LogObserver ob=new LogObserver(server); + th.setRequestObserver(ob.getTransactionRequestObserver()); + th.setResponseObserver(ob.getTransactionResponseObserver()); + }); + add(tlogButton); + add(new JLabel("SLF4J Logging")); + + } private JRadioButton addButton(String bgName,JLabel jLabel, Runnable action) { diff --git a/convex-observer/src/main/java/convex/observer/LogObserver.java b/convex-observer/src/main/java/convex/observer/LogObserver.java new file mode 100644 index 000000000..572eef321 --- /dev/null +++ b/convex-observer/src/main/java/convex/observer/LogObserver.java @@ -0,0 +1,34 @@ +package convex.observer; + +import java.util.function.BiConsumer; +import java.util.function.Consumer; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import convex.core.Result; +import convex.core.data.SignedData; +import convex.core.transactions.ATransaction; +import convex.peer.Server; + +public class LogObserver { + static final Logger log = LoggerFactory.getLogger(LogObserver.class.getName()); + + protected Server server; + + public LogObserver(Server server) { + this.server=server; + } + + public Consumer> getTransactionRequestObserver() { + return stx->{ + log.info("TX Request: {}",stx); + }; + } + + public BiConsumer,Result> getTransactionResponseObserver() { + return (tx,r)->{ + log.info("TX Response: {} for tx {}",r,tx); + }; + } +}