您的位置:首页 > 编程语言 > Java开发

java 日志的使用实际练习代码

2017-08-29 15:45 344 查看
//API部分
java.util.logging.Logger


//程序部分
package logging;

//java.awt是一个软件包,包含用于创建用户界面和绘制图形图像的所有分类。在AWT术语中,诸如按钮或滚动条之类的用户界面对象称为组件。Component类是所有 AWT 组件的根。有关所有 AWT 组件的公共属性详细描述,请参见 Component。

import java.util.logging.*;
import javax.swing.*;
import javax.swing.JLabel;

import java.awt.*;
import java.awt.event.*;
import java.awt.event.ActionListener;
import java.io.*;
import java.io.IOException;
import java.util.logging.FileHandler;
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.LogRecord;

import javax.swing.JMenuItem;

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("cuimingxuan ").setLevel(Level.ALL);
final int LOG_ROTATION_COUNT=10;
Handler handler=new FileHandler("%h/LoggingImageViewer.log",0,LOG_ROTATION_COUNT);
Logger.getLogger("cuimingxuan ").addHandler(handler);

}
catch(IOException e)
{
Logger.getLogger("cuimingxuan ").log(Level.SEVERE,"Can't creatr log handler",e);
}

}

EventQueue.invokeLater(()->
{

Handler windowHandler=new WindowHandler();
windowHandler.setLevel(Level.ALL);
Logger.getLogger("cuimingxuan ").addHandler(windowHandler);

JFrame frame=new ImageViewerFrame();
frame.setTitle("LoggingImageViewer");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

Logger.getLogger("cuimingxuan ").fine("Showing frame");
frame.setVisible(true);

});
}

}

/**
* the frame that shows the image
*/
class ImageViewerFrame extends JFrame
{
private static final int DEFAULT_WIDTH=300;
private static final int DEFAULT_HEIGHT=400;

private JLable label=new JLable();
private static Logger logger=Logger.getLogger("cuimingxuan ");

public ImageViewerFrame()
{
logger.entering("ImageViewerFrame", "<init>");
setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);

//set up menu bar
JMenuBar menuBar=new JMenuBar();
setJMenuBar(menuBar);
//public void setJMenuBar(JMenuBar 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();   //////////////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);
/**
* entering
public void entering(String sourceClass,
String sourceMethod,
Object[] params)
使用参数数组记录方法条目。
这是一种方便的方法,可用于将条目记录到方法中。 具有消息“ENTRY”(后跟参数数组中每个条目的格式{N}指
* 符)的LogRecord,记录级别FINER,并记录给定的sourceMethod,sourceClass和参数。
*/
/**
* JFileChooser
public JFileChooser()
构造一个JFileChooser指向用户的默认目录。 这个默认值取决于操作系统。 它通常是Windows上的“我的文档”文件
* 夹,Unix上的用户主目录。
*/
//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()
{
@Override
public boolean accept(File f)
{
return f.getName().toLowerCase().endsWith(".gif")||f.isDirectory();
/**
* getName
public String getName()
返回由此抽象路径名表示的文件或目录的名称。 这只是路径名称序列中的最后一个名字。 如果路
* 径名的名称序列为空,则返回空字符串。
结果
由此抽象路径名表示的文件或目录的名称,如果此路径名的名称序列为空,则为空字符串
*/
//To change body of generated methods, choose Tools | Templates.
}

@Override
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");
}
}
}

class WindowHandler extends StreamHandler
{
private JFrame frame;

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)
{

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

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息