java 日志的使用实际练习代码
来源:互联网 发布:jpg用什么软件 编辑:程序博客网 时间:2024/05/16 11:25
//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(); }}
阅读全文
0 0
- java 日志的使用实际练习代码
- 【JAVA实例】代码生成器的原理讲解以及实际使用
- 项目中实际使用的日志配置log4j2 + slf4j
- 使用JAVA Get POST 抓网页的练习代码
- JAVA多线程之Future的实际使用
- 使用Java代码书写日志的工具类
- 我的JAVA练习代码
- java.awt的练习代码
- Java-反射-实际使用
- Java Map练习与实际应用
- Java代码实际执行顺序
- 通过实际的操作练习学习git的使用(四)
- xmlhttp的实际使用
- Binder的实际使用
- popupWindow的实际使用
- Canvas的实际使用
- java 练习的习题 7_15 循环练习代码
- MFC使用CDC的文字处理练习代码
- float 与position 的一个demo
- 10个运维人员需要知道的”系统进程”
- 推荐:js用canvas画水平曲线走势图,图线自适应垂直高度
- 【HDU
- java实现ICMP协议的ping功能
- java 日志的使用实际练习代码
- Directx9学习(七)初识texture(1)
- 使用zmq多次通信
- ionic2开发(四)存储账号信息
- JAVA项目打包
- el表达式内置函数
- 各种编码
- (3)脚本增强实战注意点之检查点和参数化
- rosbag 录制小乌龟的轨迹