3.4 单例模式在日志管理中的实际应用

作为非常简单的单例模式,其实现方法就是定义一个该类的静态变量,然后再定义一个获取该静态变量的静态方法。单例模式在程序开发中有着广泛的应用,比如数据库连接池,日志管理等都会使用到,学习设计模式最好的办法就是看好的代码,Log4j是Apache的一个开放源代码项目,得益于它良好的架构设计,开发人员可以随意控制日志语句的输出,输出的目的地可以是控制台,文件,邮件,数据库等。在Log4j中就用到了单例模式,当然Log4j中还是用了很多的设计模式。
先来看一下Log4j的使用方法
对于一个日志管理工具来说,需要考虑的内容主要有3个:

  • 日志的输出格式
  • 日志的输出目的地
  • 日志的优先级

Log4j有3个主要的组件和上述内容相对应:Layouts(布局),Appenders(输出源)和Loggers(记录器)。Log4j可以自定义日志输出的级别,从低到高依此有:DEBUG,INFO,WARN,ERROR,FATAL,这些级别分别用来制定输出日志的重要程度:如果定义了输入的级别为WARN,则只有等于或高于这个级别的(WARN,ERROR,FATAL)的日志才能输出,日志输出中还有两个关键字:
- ALL:输出所有的日志
- OFF:关闭所有的日志输出
要使用Log4j,首先需要下载Log4j的JAR包,然后将其放在程序的CLASSPATH中。首通过XML或Properties配置Log4j的日志输出位置,输出格式,输出优先级等信息,然后在程序中获取Logger,编写日志输出信息即可。
Log4j有两种定义方式:一种是采用Porperties,另一种是采用XML。 具体的使用方法是:首先在程序的开始位置定义Logger,如下:
public static logger logger = Logger.getLogger(myClass.getName());
然后在需要日志的地方,添加相应的代码即可,如下所示:
logger.debug(“输出日志”);
从上面Log4j的使用方法可以看出,在使用Log4j时,首先要通过调用public static Logger logger.getLogger(String name)或者 public static Logger Logger.getLogger(Class calzz)获得或创建一个Logger,然后在需要的地方,添加相应的代码即可,典型的使用Log4j来记录日志的示意代码如下:

//***Computer.java************
package Computer;
import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.Logger;
import org.apache.log4j.Priority;
Public class Computer{
    //定义Logger
    static Logger logger = Logger.getLogger(Computer.class.getName());
    logger.info("输出希望的日志");
}
}

从上面的代码可以看出,在使用Log4j管理日志时,必须要定义一个静态的变量Logger,就是这个静态的变量,从而保证所有的日志都能够输出到一个日志文件里,这就是单例模式的应用,如果不定义为静态变量,会出现什么状况?这里通过一组示意代码来展示采用单例模式和不采用单例模式的区别。
模拟一个日志管理类,该日志管理类不采用单例模式,用来负责日志的输出。它的源码如下:

//**LogManager.java******************
import java.io.*;
import java.util.*;
public class LogManager{
//默认的日志文件的路径和文件名称
    private String DefalutLogFilePathName = "c:\\single.log";
    //唯一的实例
    private LogManager logManager;
    //属性配置文件的输入流
    private InputStream fin;
    private Properties pro;
    private PrintWriter out;
    private String LogFileName;
    private LogManager(){ outInit(); }
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值