zoukankan      html  css  js  c++  java
  • java设计模式:单例模式之应用示例———编制日志类

    编制日志类。一般来说,应用程序都有日志文件,记录一些执行信息。在windows系统下,无论多次双击记事本文件,都只会出现一个窗口。

    此功能正是利用单例对象来实现的。

    不多说上代码:

    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.Calendar;

    public class FileLogger
    {
    private String path="D:/IDEA plugins/log.txt";//目的路径
    private FileOutputStream out=new FileOutputStream(path,true);
    // 上面的true意为 out从日志文件尾部开始添加纪录!重启后新日志自动追加到末尾,原信息不变!
    private FileLogger()throws Exception //日志类
    {
    System.out.println("这是一个新实例!");
    }
    private static class My //单例模式 静态 内部
    {
    private static FileLogger fileLogger;

    static
    {
    try
    {
    fileLogger = new FileLogger();
    } catch (Exception e)
    {
    e.printStackTrace();
    }
    }
    }
    public static FileLogger getFileLogger() //外部引用类,获取内部信息
    {
    return My.fileLogger;
    }
    // 文本的输入
    public void write(String msg)
    {
    try
    {
    Calendar c=Calendar.getInstance();
    int y=c.get(Calendar.YEAR);
    int m=c.get(Calendar.MONTH);
    int d=c.get(Calendar.DAY_OF_MONTH);
    int hh=c.get(Calendar.HOUR);
    int mm=c.get(Calendar.MINUTE);
    int ss=c.get(Calendar.SECOND);

    String strTime="";
    strTime= strTime.format("time:%d-%02d-%02d %02d-%02d-%02d ",y,m,d,hh,mm,ss);
    String strContent="content: "+msg+" ";

    byte buf[]=strTime.getBytes("gbk");//设置编码方式
    out.write(buf);
    buf=strContent.getBytes("gbk");
    out.write(buf);//此write非上面方法名write,此是(FileOutoutStream) out 的子方法
    out.flush();
    } catch (Exception e)
    {
    e.printStackTrace();
    }
    }
    public void close()
    {
    try
    {
    out.close();
    } catch (IOException e)
    {
    e.printStackTrace();
    }
    }
    }
    下面编写一个测试类:
    public class itsTest
    {
    public static void main(String[] args)
    {
    // 获得日志单例对象
    FileLogger obj=FileLogger.getFileLogger();
    obj.write("hello!");
    obj.write("nihao!");
    obj.write("利好刘!");
    obj.close();
    System.out.println("结束!");
    }
    }

    运行:

    这是一个新实例!
    结束!

    Process finished with exit code 0

    目的文件已成功生成!

  • 相关阅读:
    P4568 [JLOI2011]飞行路线(分层图)
    打地鼠游戏(贪心)
    雷神领域(并查集真是个好东西)并查集+流氓dp
    P2934 [USACO09JAN]安全出行
    P2893 [USACO08FEB]修路
    P2894 [USACO08FEB]酒店Hotel
    P4145 上帝造题的七分钟2 / 花神游历各国
    P2579 [ZJOI2005]沼泽鳄鱼(邻接矩阵,快速幂)
    P2905 [USACO08OPEN]农场危机Crisis on the Farm(简单dp+麻烦“回溯”)
    day 2 上午 挂饰 背包
  • 原文地址:https://www.cnblogs.com/Mark-blog/p/8579144.html
Copyright © 2011-2022 走看看