Window Handler: display log message in a window(JFrame) : Log Handler « Log « Java Tutorial






import java.util.logging.ErrorManager;
import java.util.logging.Filter;
import java.util.logging.Formatter;
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.LogManager;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
import java.util.logging.SimpleFormatter;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;

class LogWindow extends JFrame {
  private JTextArea textArea = new JTextArea();

  public LogWindow() {
    super("");
    setSize(300, 300);
    add(new JScrollPane(textArea));
    setVisible(true);
  }

  public void showInfo(String data) {
    textArea.append(data);
    this.validate();
  }
}

class WindowHandler extends Handler {
  private LogWindow window = null;

  private Formatter formatter = null;

  private Level level = null;

  private static WindowHandler handler = null;

  private WindowHandler() {
    LogManager manager = LogManager.getLogManager();
    String className = this.getClass().getName();
    String level = manager.getProperty(className + ".level");
    setLevel(level != null ? Level.parse(level) : Level.INFO);
    if (window == null)
      window = new LogWindow();
  }

  public static synchronized WindowHandler getInstance() {
    if (handler == null) {
      handler = new WindowHandler();
    }
    return handler;
  }

  public synchronized void publish(LogRecord record) {
    String message = null;
    if (!isLoggable(record))
      return;
    message = getFormatter().format(record);
    window.showInfo(message);
  }

  public void close() {
  }

  public void flush() {
  }
}

public class Main {
  private WindowHandler handler = null;

  private Logger logger = null;

  public Main() {
    handler = WindowHandler.getInstance();
    logger = Logger.getLogger("logging.handler");
    logger.addHandler(handler);
  }

  public void logMessage() {
    logger.info("Hello from ...");
  }

  public static void main(String args[]) {
    Main demo = new Main();
    demo.logMessage();
    WindowHandler h = WindowHandler.getInstance();
    LogRecord r = new LogRecord(Level.WARNING, "The Handler publish method...");
    h.publish(r);
  }
}








35.5.Log Handler
35.5.1.Use ConsoleHandler
35.5.2.Using FileHandler to log a message
35.5.3.Add Multiple Handlers to a logger
35.5.4.How to write custom handler
35.5.5.Stream Handler
35.5.6.Memory Handler Demo
35.5.7.Socket Handler Demo
35.5.8.Using Regular Expressions based on StreamHandler
35.5.9.Writing Log Records to a Log File
35.5.10.A file handler that appends.
35.5.11.Writing Log Records to Standard Error
35.5.12.Writing Log Records Only After a Condition Occurs
35.5.13.Create a memory handler with a memory of 100 records and dumps the records into the file my.log
35.5.14.Flush File Handler and Logger
35.5.15.The Patterns in FileHandler
35.5.16.Limiting the Size of a Log File
35.5.17.Limiting the Size of a Log by Using a Rotating Sequence of Files
35.5.18.Use Logger with simple formatter and FileHander
35.5.19.Alternate XML by using FileHandler
35.5.20.Window Handler: display log message in a window(JFrame)