• 单例模式之应用示例———编制日志类


      编制日志类。一般来说,应用程序都有日志文件,记录一些执行信息。在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

    目的文件已成功生成!

  • 相关阅读:
    IDEA 中 右键新建时,没有新建class的解决方案
    Git--删除远程仓库文件但不删除本地仓库资源
    Git——跟踪或取消跟踪文件
    git命令大杂烩
    判断项目中是否有slf4j的实现类
    完美解决在Servlet中出现一个输出中文乱码的问题
    mysql常用命令和语句
    设置idea快速生成doc comment
    关于pom.xml中的dependency中的顺序
    Pyqt5_QMessageBox
  • 原文地址:https://www.cnblogs.com/Mark-blog/p/8578471.html
Copyright © 2020-2023  润新知