Auf Thema antworten

Absolut ungetestete Idee (die aber IMHO funktionieren könnte): 

  1. Schreibe dir einen Appender (in Log4J heissen die, glaube ich, so) der weder auf die Konsole noch ein File schreibt und stattdessen eine BlockingQueue befüllt (https://www.baeldung.com/java-blocking-queue).
  2. Diesen registrierst du als Bean in Spring, die du dir dann später irgendwo auch Autowiren kannst
  3. Passe deine Log-Config an, dass der Appender auch verwendet wird.
  4. Erstelle ein Interface, worüber du den Inhalt auslesen kannst - ich würde ServerSendEvents verwenden.
    1. https://golb.hplar.ch/2017/03/Server-Sent-Events-with-Spring.html
    2. https://dzone.com/articles/spring-boot-server-sent-events-tutorial
    3. ...
  5. Dann im Client eine Verbindung aufbauen und auf die Events hören
    1. https://github.com/launchdarkly/okhttp-eventsource
    2. https://github.com/topics/server-sent-events?l=java
    3. https://stackoverflow.com/questions/35684319/simple-implementation-of-server-and-client-by-using-sse-protocol-in-java-langu
    4. ...
  6. Empfange Events mit \n und Text in deine Text Area einfügen.

Das wäre so in etwa mein naiver Ansatz. Komplex? Ja, aber anders wird es wohl auch kaum gehen...


Bedenke: Wenn lange keine Logs abgeholt werden, könnte die Queue sich füllen - eventuell begrenzt du dass irgendwie - oder aber dein Appender feuert direkt über den SSE-Sender, ohne die Daten je zwischenzuspeichern, zu allen registrierten Clients.



Oben