zoukankan      html  css  js  c++  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

    目的文件已成功生成!

  • 相关阅读:
    HDU 5791 Two (DP)
    POJ 1088 滑雪 (DPor记忆化搜索)
    LightOJ 1011
    POJ 1787 Charlie's Change (多重背包 带结果组成)
    HDU 5550 Game Rooms (ccpc2015 K)(dp)
    HDU 5542 The Battle of Chibi (ccpc 南阳 C)(DP 树状数组 离散化)
    HDU 5543 Pick The Sticks (01背包)
    HDU 5546 Ancient Go (ccpc2015南阳G)
    NB-IoT的DRX、eDRX、PSM三个模式 (转载,描述的简单易懂)
    MQTT 嵌入式端通讯协议解析(转)
  • 原文地址:https://www.cnblogs.com/Mark-blog/p/8578471.html
Copyright © 2011-2022 走看看