读书人

一行来讨论下日志吧(java核心技术卷1

发布时间: 2013-06-19 10:26:41 作者: rapoo

一起来讨论下日志吧(java核心技术卷1 日志的例子 看不懂)
看了一遍没看懂,自己运行了下例子,不知道所说的日志记录,在哪看?(新手 java刚接触 刚看完《java就业培训教程》 就看《java核心技术》感觉老外写的很复杂,很难懂)

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.util.logging.*;
import javax.swing.*;

/**
* A modification of the image viewer program that logs various events.
* @version 1.02 2007-05-31
* @author Cay Horstmann
*/
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);
final int LOG_ROTATION_COUNT = 10;
Handler handler = new FileHandler("%h/LoggingImageViewer.log", 0, LOG_ROTATION_COUNT);
Logger.getLogger("com.horstmann.corejava").addHandler(handler);
}
catch (IOException e)
{
Logger.getLogger("com.horstmann.corejava").log(Level.SEVERE,
"Can't create log file handler", e);
}
}

EventQueue.invokeLater(new Runnable()
{
public void run()
{
Handler windowHandler = new WindowHandler();
windowHandler.setLevel(Level.ALL);
Logger.getLogger("com.horstmann.corejava").addHandler(windowHandler);

JFrame frame = new ImageViewerFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Logger.getLogger("com.horstmann.corejava").fine("Showing frame");
frame.setVisible(true);
}
});
}
}

/**
* The frame that shows the image.


*/
class ImageViewerFrame extends JFrame
{
public ImageViewerFrame()
{
logger.entering("ImageViewerFrame", "<init>");
setTitle("LoggingImageViewer");
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);

// set up menu bar
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);

JMenu menu = new JMenu("File");
menuBar.add(menu);

JMenuItem openItem = new JMenuItem("Open");
menu.add(openItem);
openItem.addActionListener(new FileOpenListener());

JMenuItem exitItem = new JMenuItem("Exit");
menu.add(exitItem);
exitItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
logger.fine("Exiting.");
System.exit(0);
}
});

// use a label to display the images
label = new JLabel();
add(label);
logger.exiting("ImageViewerFrame", "<init>");
}

private class FileOpenListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
logger.entering("ImageViewerFrame.FileOpenListener", "actionPerformed", event);

// set up file chooser
JFileChooser chooser = new JFileChooser();
chooser.setCurrentDirectory(new File("."));

// accept all files ending with .gif
chooser.setFileFilter(new javax.swing.filechooser.FileFilter()
{
public boolean accept(File f)
{
return f.getName().toLowerCase().endsWith(".gif") || f.isDirectory();
}

public String getDescription()


{
return "GIF Images";
}
});

// show file chooser dialog
int r = chooser.showOpenDialog(ImageViewerFrame.this);

// if image file accepted, set it as icon of the label
if (r == JFileChooser.APPROVE_OPTION)
{
String name = chooser.getSelectedFile().getPath();
logger.log(Level.FINE, "Reading file {0}", name);
label.setIcon(new ImageIcon(name));
}
else logger.fine("File open dialog canceled.");
logger.exiting("ImageViewerFrame.FileOpenListener", "actionPerformed");
}
}

private JLabel label;
private static Logger logger = Logger.getLogger("com.horstmann.corejava");
private static final int DEFAULT_WIDTH = 300;
private static final int DEFAULT_HEIGHT = 400;
}

/**
* A handler for displaying log records in a window.
*/
class WindowHandler extends StreamHandler
{
public WindowHandler()
{
frame = new JFrame();
final JTextArea output = new JTextArea();
output.setEditable(false);
frame.setSize(200, 200);
frame.add(new JScrollPane(output));
frame.setFocusableWindowState(false);
frame.setVisible(true);
setOutputStream(new OutputStream()
{
public void write(int b)
{
} // not called

public void write(byte[] b, int off, int len)
{
output.append(new String(b, off, len));
}
});
}



public void publish(LogRecord record)
{
if (!frame.isVisible()) return;
super.publish(record);
flush();
}

private JFrame frame;
}

把例子贴出来 希望高手给开导开导~~~~~
[解决办法]
引用:
哦 看到了 那要是默认的话(程序自己不安装这样的插件) 日志一般都在哪看??

linux下 cat xxx.log或tail -f xxx.log -n200
windows下type xxx.log
[解决办法]
more

读书人网 >J2SE开发

热点推荐