import java.awt.EventQueue;
import java.io.IOException;
import java.io.OutputStream;
import java.util.logging.FileHandler;
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
import java.util.logging.StreamHandler;import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;public class LoggingImageViewer
{
public static void main(String[] args)
{
if(System.getProperty("java.util.logging.config.class") ==null
&& System.getProperty("java.util.logging.config.file") == null)
{
try
{
Logger.getLogger("com.horstmann.corejava").setLevel(Level.ALL);
Handler fileHandler = new FileHandler("%h/LoggingImageViewer.log", 0, 10);
Logger.getLogger("com.horstmann.corejava").addHandler(fileHandler);
}
catch(IOException e)
{
Logger.getLogger("com.horstmann.corejava").log(Level.SEVERE, "Can't log a file", e);
}
}
EventQueue.invokeLater(new Runnable()
{
public void run()
{
ImageFrame imageFrame = new ImageFrame();
imageFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Handler windowHandler = new windowHandler();
windowHandler.setLevel(Level.ALL);
Logger.getLogger("com.horstmann.corejava").addHandler(windowHandler);
Logger.getLogger("com.horstmann.corejava").fine("Show Frame");
imageFrame.setVisible(true);
}
});
}} class windowHandler extends StreamHandler
{
public windowHandler()
{
frame = new JFrame();
frame.setSize(200, 200);
frame.setTitle("LoggingImageViewer");
final JTextArea textArea = new JTextArea();
textArea.setEditable(false);
frame.add(new JScrollPane(textArea));
frame.setVisible(true);
setOutputStream(new OutputStream()
{
public void write(int b) throws IOException
{
}
public void write(byte[] b, int off, int len)
{
textArea.append(new String(b, off, len));
}
});
}
public void publish(LogRecord record)
{
if(!frame.isVisible())return;
super.publish(record);
flush();
}
private JFrame frame;
}
class ImageFrame extends JFrame
{
public ImageFrame()
{
Logger.getLogger("com.horstmann.corejava").entering("ImageFrame", "<init>"); //记录不到
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
setTitle("ImageFrame");
Logger.getLogger("com.horstmann.corejava").exiting("ImageFrame", "<init>"); //记录不到 }
public static final int DEFAULT_WIDTH = 300;
public static final int DEFAULT_HEIGHT = 400;
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货