LogWindow.java Source code

Java tutorial

Introduction

Here is the source code for LogWindow.java

Source

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);
    }
}