Log4j

1.日志系统的作用

原始的方法是把信息输出到屏幕,利用JDK提供的system.out.println。但是这样做的坏处是显而易见的:
a)信息的输出不够灵活,并且琐碎
b)如果要改变输出的内容和格式,需要重新编译源文件
c) 更严重的是,如果程序中有很多的println,会严重影响程序的性能

2. log4j

Log4j由三个重要的组件构成:
1)    日志信息的优先级<level>:日志信息的优先级从高到低有Fatal ERROR、WARN、INFO、DEBUG,分别用来指定这条日志信息的重要程度;
2)    日志信息的输出目的地<appender>:控制台或者文件;通过appender指定日志信息输出到哪个地方。可以同时指定多个输出目的地。
3)    日志信息的输出格式<layout>。输出格式则控制了日志信息的显示内容。
Log4j较早出现的比较成功的日志系统。Log4j开创的日志系统模型(Logger/Appender/Level)行之有效,并一直延用至今。Logback是较新的日志系统。它是Log4j的作者吸取多年的经验教训以后重新做出的一套系统。它的使用更方便,功能更强,而且性能也更高。Logback不能单独使用,必须配合日志框架SLF4J来使用。

3. log4j  日志级别和排序(高到低)

FATAL、ERROR、WARN、INFO、DEBUG,定义了INFO级别, 则应用程序中所有DEBUG级别的日志信息将不被打印出来(向上包含)。
FATAL:每个严重的错误事件将会导致应用程序的退出。
ERROR:指出虽然发生错误事件,但仍然不影响系统的继续运行
WARN:表明会出现潜在错误的情形
INFO:消息在粗粒度级别上突出强调应用程序的运行过程
DEBUG:细粒度信息事件对调试应用程序是非常有帮助的

4. 为什么要为日志定义多个不同的级别呢?

每个工程分为三个模式:生产(开发)模式,测试模式,线上模式。工程的线上模式不需要DEBUG信息的。一般生产环境是配置成INFO级别这样错误信息,警告信息等都可以看到,开发模式下可以配置成DEBUG,可以查看调试信息

5. 如何在程序中使用log4j

public class Log4jTest {

    public static void main(String argv[]) {

        // Create a logger by the name of class Log4jTest.
        // Logger对象是用来取代System.out或者System.err的日志写出器,用来供程序员输出日志信息。
        Logger logger = Logger.getLogger(Log4jTest.class);

        // Use the default configuration.
        BasicConfigurator.configure();
        // DOMConfigurator.configure(Log4jTest.class.getClassLoader().getResource("log4j.xml"));

        /*
         * 每条输出到logger的日志请求(logging request)也都有一个level,<br/>
         * 如果该request的level大于等于该logger的level则该request将被处理(称为enabled);否则该request将被忽略。<br/> 故可得知:<br/>
         * logger的level越低,表示该logger越详细; logging request的level越高,表示该logging request越优先输出<br/>
         * Level类中预定义了五个level,它们的大小关系如下:<br/> 低 --> 高: Level.ALL < Level.DEBUG < Level.INFO < Level.WARN < Level.ERROR <
         * Level.FATAL < Level.OFF <br/>
         */
        logger.setLevel(Level.INFO);// 每个logger都被分配了一个日志级别 (log level),用来控制日志信息的输出。

        // This request will be disabled since Level.DEBUG < Level.INFO.
        logger.debug("This is debug.");

        // These requests will be enabled.
        logger.info("This is an info.");
        logger.warn("This is a warning.");
        logger.error("This is an error.");
        logger.fatal("This is a fatal error.");


        return;
    }
}

参考资料:

import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;
 org.apache.commons.io;

  Apache Logging Project Homepage: http://logging.apache.org
  http://heavyz.sourceforge.net/homepage/homepage_zh/comp/notes/log4j.html
  http://supportweb.cs.bham.ac.uk/documentation/tutorials/docsystem/build/tutorials/log4j/log4j.html

  http://www.iteye.com/topic/115602

http://www.iteye.com/topic/142050

http://lavasoft.blog.51cto.com/62575/184492

http://dormancy.iteye.com/blog/1104819

http://ltc603.iteye.com/blog/151341


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值