首页 > 代码库 > Log4J学习【一】Log4J简介
Log4J学习【一】Log4J简介
Log4J简介
基本上所有的大型应用,包括我们常用的框架,比如hibernate;spring;struts等,在其内部都做了一定数量的日志信息。为什么要做这些日志信息,在系统中硬编码日志记录信息是调试系统,观察系统运行状态的一种方式。可能大部分程序员都还记得自己最开始写代码的时候,写一个方法总是出错,就喜欢使用System.out.println(“1111111”)之类的代码来查看程序的运行是否按照自己想要的方式在运行,其实这些sysout就是日志记录信息,但使用System.out.println或者System.err.println在做日志的时候有其非常大的局限性:
第一,所有的日志信息输出都是平行的。比如我不能单独的控制只输出某一个或者某几个模块里面的日志调试信息;或者我不能控制只输出某一些日志。
第二,日志信息的输出不能统一控制。比如我不能控制什么时候打印信息,什么时候不打印信息,如果我不想打印任何信息,我只能选择到所有的java文件中去注释这些日志信息。
第三,日志信息的输出方式是固定的。比如,在编码期,就只能输出到eclipse的控制台上,在tomcat环境中就只能输出到tomcat的日志文件中,我不能选择比如输出日志到数据库或者输出日志到Email中等等复杂的控制。
可能有的人会说,为了调试系统,使用System.out.println这些小盆友简直弱爆了,调试系统不都用DEBUG么?可能在编码阶段,用DEBUG更容易迅速的发现和找到错误,但是,如果我想在产品阶段也能跟踪和观察系统的运行状态呢?
所以,综上所述,在编码阶段,往往需要一种统一的硬编码日志方式,来记录程序的运行状态,并且能够提供简单的方式,统一控制日志的输出粒度和输出方式。Log4J就是在这种情况下诞生的,而现在Log4J已经被广泛的采用,成为了最流行的日志框架之一。
Log4J提供了非常简单的使用方式,如果不需要深入去发现Log4J,或者需要自己去扩展Log4J,那么使用起来是非常方便的。而Log4J也非常关注性能的问题,因为在应用中大量的采用日志的方式,会带来一些反面的问题:
1,会使一段代码的篇幅增大,增加阅读的难度;
2,增加代码量,会在一定程度上降低系统运行性能;
而Log4J在性能上不断的优化,使普通的日志输出的性能甚至做到比System.out.println更快。
最后,Log4J提供了非常方便的扩展方式,能让我们非常简单的自定义自己的日志输出级别,日志输出方式等。
在真正进入Log4J的学习之前,我想给所有的中国JAVA程序员说一句话:日志是一种态度。希望大家轻喷。
基本上所有的大型应用,包括我们常用的框架,比如hibernate;spring;struts等,在其内部都做了一定数量的日志信息。为什么要做这些日志信息,在系统中硬编码日志记录信息是调试系统,观察系统运行状态的一种方式。可能大部分程序员都还记得自己最开始写代码的时候,写一个方法总是出错,就喜欢使用System.out.println(“1111111”)之类的代码来查看程序的运行是否按照自己想要的方式在运行,其实这些sysout就是日志记录信息,但使用System.out.println或者System.err.println在做日志的时候有其非常大的局限性:
第一,所有的日志信息输出都是平行的。比如我不能单独的控制只输出某一个或者某几个模块里面的日志调试信息;或者我不能控制只输出某一些日志。
第二,日志信息的输出不能统一控制。比如我不能控制什么时候打印信息,什么时候不打印信息,如果我不想打印任何信息,我只能选择到所有的java文件中去注释这些日志信息。
第三,日志信息的输出方式是固定的。比如,在编码期,就只能输出到eclipse的控制台上,在tomcat环境中就只能输出到tomcat的日志文件中,我不能选择比如输出日志到数据库或者输出日志到Email中等等复杂的控制。
可能有的人会说,为了调试系统,使用System.out.println这些小盆友简直弱爆了,调试系统不都用DEBUG么?可能在编码阶段,用DEBUG更容易迅速的发现和找到错误,但是,如果我想在产品阶段也能跟踪和观察系统的运行状态呢?
所以,综上所述,在编码阶段,往往需要一种统一的硬编码日志方式,来记录程序的运行状态,并且能够提供简单的方式,统一控制日志的输出粒度和输出方式。Log4J就是在这种情况下诞生的,而现在Log4J已经被广泛的采用,成为了最流行的日志框架之一。
Log4J提供了非常简单的使用方式,如果不需要深入去发现Log4J,或者需要自己去扩展Log4J,那么使用起来是非常方便的。而Log4J也非常关注性能的问题,因为在应用中大量的采用日志的方式,会带来一些反面的问题:
1,会使一段代码的篇幅增大,增加阅读的难度;
2,增加代码量,会在一定程度上降低系统运行性能;
而Log4J在性能上不断的优化,使普通的日志输出的性能甚至做到比System.out.println更快。
最后,Log4J提供了非常方便的扩展方式,能让我们非常简单的自定义自己的日志输出级别,日志输出方式等。
在真正进入Log4J的学习之前,我想给所有的中国JAVA程序员说一句话:日志是一种态度。希望大家轻喷。
更多技术问题请访问成都传智播客官网的技术论坛!
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。