简单日志类的实现,性能问题?

igyhi 2007-08-17 09:11:41
想写个日志工具,功能很简单,就是根据参数值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对象都要读次文件.性能是不是不好.有没有什么更好的解决办法,读一次文件.
静态类可以解决上面的问题么?怎么写?
或者有没有更好的类似的实现方式
...全文
160 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
igyhi 2007-08-17
  • 打赏
  • 举报
回复
log4j用不了那么多功能.
简单写一个就可以.

如果没有log4j怎么办

myydzhz 2007-08-17
  • 打赏
  • 举报
回复
直接用log4j好了,用单例模式或者静态方法都可
igyhi 2007-08-17
  • 打赏
  • 举报
回复
这么写就可以了

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");
}
}


=============
楼上写的好象麻烦了点~
是不是我写的有漏洞?
ljq900 2007-08-17
  • 打赏
  • 举报
回复
使用举例
log.getlog().outInfo("","");
ljq900 2007-08-17
  • 打赏
  • 举报
回复
log已有代码下面省略
public class Log
{
private Log();//把public 改为private 不允许创建
private static Log thisinstance=new log();//在这里创建log
public Log getlog() //返回实例
{
return thisinstance;
}
}
saint13 2007-08-17
  • 打赏
  • 举报
回复
singleton模式解决之.
igyhi 2007-08-17
  • 打赏
  • 举报
回复
d

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧