单例设计模式Singleton

package joeho.net.csdn.blog.Singleton;

import java.io.*;
import java.util.*;

public class LogManager {
 
 //默认的日志文件的路径和文件名称
 private static final String defaultLogFilePathName="d://gf.log";
 //该类的唯一的实例,当类的构造函数为私有的时候,
 //禁止外部类对其实例化,但是可在内部创建该类的实例对象
 private static LogManager logManager;
 //属性配置文件的输入流
 private static InputStream fin;
 private static Properties pro;
 private static PrintWriter out;
 private static String logFileName;
 
 private LogManager(){
  outInit();
 }
 
 /**保持日志,并加上保持日期
  *
  *
  */
  public static synchronized void log(String message){
   logManager = new LogManager();
   if(out!=null){
    out.println(new java.util.Date()+":"+message);
   }
  }
 
  /**保持异常,并加上日期
   *
   *
   *
   */
   public static synchronized void log(Exception e){
    logManager = new LogManager();
    if(out!=null){
     out.println(new java.util.Date()+":");
     e.printStackTrace(out);
    }
   }
  
   /**输出文件流的init
    *
    *
    */
   private void outInit(){
    if(logFileName == null){
     //从属性文件中获得日志文件的路径
     logFileName = getLogFileName();     
    }
    try{
     out = new PrintWriter(new FileWriter(logFileName,true),true);
     
    }catch(IOException ex){
     System.out.println("无法打开日志文件:"+logFileName);
     ex.printStackTrace();
     out = null;
     
    }
   }
  
   /**根据配置文件来获得日志文件的位置
    *
    *
    */
    private String getLogFileName(){
     try{
      if(pro==null){
       pro = new Properties();
       //获取属性配置文件log.properties
       fin = getClass().getResourceAsStream("log.properties");
       //载入配置文件
       pro.load(fin);
       //
       fin.close();
      }
      
     }catch(IOException e){
      System.out.println("无法打开属性配置文件:log.properties");
      e.printStackTrace();
     }
     return pro.getProperty("logfile",defaultLogFilePathName);
    }
   
    /**关闭日志
     *
     */
    
    public void distory(){
     try{
      this.logManager = null;
      if(out!=null){
       this.out.close();
      }
      if(fin!=null){
       this.fin.close();
      }
      
     }catch(IOException e){
      e.printStackTrace();
     }
    }
  
    public static void main(String args[]){
     LogManager.log("单例设计模式的应用");
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值