想写个日志工具,功能很简单,就是根据参数值Rank级别决定这个信息是否输出应用:
public class A
{
  //类中的其他代码...  //日志工具要调试输出
  Log log=new Log();
  log.outInfo("这里是输出的信息内容","Rank3");
}public class Log
{
  //允许显示的级别集合
  private List l=null;
  public Log()
  {
  //预定义3个级别
    l=new ArrayList();
    l.add("Rank1");
    l.add("Rank2");
    l.add("Rank3");
  }
  //显示信息函数
  public void outInfo(String text,String type)
  {
    if(l.contains(type))System.out.println(text);
  }
}当使用的时候,我想用读文件内容来控制显示级别Rank,
一个文件logRank.txt
Rank="Rank1,Rank2,Rank3";然后把文件属性读到List里改造后的Log类
public class Log
{
  //读文件内容
  File f=new File("xxx");
    //文件操作.....  //允许显示的级别集合
  private List l=null;
  public Log()
  {
  //预定义3个级别
    l=new ArrayList();
  //装入文件中的属性值
    l.add(f1);
    l.add(f2);
    l.add(f3);
  }
  //显示信息函数
  public void outInfo(String text,String type)
  {
    if(l.contains(type))System.out.println(text);
  }
}这样有个问题,就是每次new个Log对象都要读次文件.性能是不是不好.有没有什么更好的解决办法,读一次文件.
静态类可以解决上面的问题么?怎么写?
或者有没有更好的类似的实现方式

解决方案 »

  1.   

    直接用log4j好了,用单例模式或者静态方法都可
      

  2.   

    log4j用不了那么多功能.
    简单写一个就可以.如果没有log4j怎么办
      

  3.   

    log已有代码下面省略
    public class Log
    {
       private Log();//把public 改为private 不允许创建
       private static Log thisinstance=new log();//在这里创建log
       public Log getlog()                       //返回实例
       {
          return thisinstance;
       }
    }
      

  4.   

    使用举例
    log.getlog().outInfo("","");
      

  5.   

    这么写就可以了package News.util;import java.util.ArrayList;
    import java.util.List;public class LogOut
    {
    private static List l = null;
    private static LogOut instance=new LogOut();
    public LogOut()
    {
    l = new ArrayList();
    l.add("Rank1");
    //l.add("Rank2");
    l.add("Rank3");
    }
    public static void outInfo(String text, String type)
    {
    if (l.contains(type))
    System.out.println(text);
    else
    System.out.println("none");
    }
    }使用package test;
    import News.util.*;
    public class LogOutTest
    {
    public static void main(String args[])
    {
    LogOut.outInfo("A","Rank2");
    LogOut.outInfo("B","Rank1");
    LogOut.outInfo("C","Rank3");
    LogOut.outInfo("D","Rank2");
    }
    }
    =============
    楼上写的好象麻烦了点~
    是不是我写的有漏洞?