alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

What this is

This file is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Java by Example" TM.

Other links

The source code

package org.apache.log4j.gui.examples;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

import org.apache.log4j.*;
import org.apache.log4j.gui.TextPanelAppender;

public class LogTextPanelExample {
  boolean packFrame = false;

  String catName = "dum.cat.name";

  public LogTextPanelExample() {

    // setup the logging
    TextPanelAppender tpa = new TextPanelAppender(new PatternLayout("%-5p %d [%t]:  %m%n"), "logTextPanel");
    tpa.setThreshold(Priority.DEBUG);
    Category cat = Category.getInstance(catName);
    cat.addAppender(tpa);

    LogFrame frame = new LogFrame(tpa);
    frame.validate();

    //Center the frame (window), and show it
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
    Dimension frameSize = frame.getSize();
    if (frameSize.height > screenSize.height) {
      frameSize.height = screenSize.height;
    }
    if (frameSize.width > screenSize.width) {
      frameSize.width = screenSize.width;
    }
    frame.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
    frame.setVisible(true);
  }

  /**Main method*/
  public static void main(String[] args) {
    try {
      UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    }
    catch(Exception e) {
      e.printStackTrace();
    }
    LogTextPanelExample foo = new LogTextPanelExample();
    new LogTextPanelExampleGenThread(foo.catName);
  }
}

class LogFrame extends JFrame {

  public LogFrame(TextPanelAppender tpa) {
    enableEvents(AWTEvent.WINDOW_EVENT_MASK);
    JPanel contentPane = (JPanel) this.getContentPane();
    contentPane.setLayout(new BorderLayout());
    this.setSize(new Dimension(600, 400));
    this.setTitle("LogTextPanel Example");
    contentPane.add(tpa.getLogTextPanel(), BorderLayout.CENTER);
  }

  // exit when window is closed
  protected void processWindowEvent(WindowEvent e) {
    super.processWindowEvent(e);
    if (e.getID() == WindowEvent.WINDOW_CLOSING) {
      System.exit(0);
    }
  }
}

class LogTextPanelExampleGenThread extends Thread {

  String catName;

  public LogTextPanelExampleGenThread(String catName) {
    this.catName = catName;
    this.setPriority(Thread.NORM_PRIORITY - 1);
    this.start();
  }

  public void run() {
    Category cat = Category.getInstance(catName);
    int cnt = 0;
    while(true) {
      cnt++;
      int randEvt = (int)(Math.random() * 125);
      if(randEvt < 3)
        cat.fatal("{" + cnt + "} Something screwed up bad.");
      else if(randEvt < 10)
        cat.error("{" + cnt + "} An error occured while trying to delete all of your files.");
      else if(randEvt < 25)
        cat.warn("{" + cnt + "} It seems as if your hard disk is getting full.");
      else if(randEvt < 55)
        cat.info("{" + cnt + "} It is now time for tea.");
      else if(randEvt < 65)
        cat.debug("{" + cnt + "} Something bad is happening on line 565 of com.foo.Crap");
      else if(randEvt < 75)
        cat.debug("{" + cnt + "} Input value for xe343dd is not equal to xe39dfd!");
      else if(randEvt < 85)
        cat.debug("{" + cnt + "} Successfully reached line 2312 of com.foo.Goo");
      else if(randEvt < 105)
        cat.debug("{" + cnt + "} Here is some extra handy debugging information for you.");
      else if(randEvt < 115)
        cat.debug("{" + cnt + "} The file you are about to write to is not open.");
      else if(randEvt < 125)
        cat.debug("{" + cnt + "} The input value to the method was .");

      try {
        Thread.sleep(10);
      }
      catch(Exception e) {}

    }
  }
}
... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.