我是靠谱客的博主 大力短靴,最近开发中收集的这篇文章主要介绍java 日志的使用实际练习代码,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

}

最后

以上就是大力短靴为你收集整理的java 日志的使用实际练习代码的全部内容,希望文章能够帮你解决java 日志的使用实际练习代码所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(73)

评论列表共有 0 条评论

立即
投稿
返回
顶部