Log4j是Apache组织的一个开源项目,它是一个日志操作包,通过使用Log4j可以指定日志信息输出的目的地,如控制台,文件,GUI组件,NT的时间记录器,还可以控制每一条日志输出的格式,此外通过定义日志的级别,能够非常细致的控制日志的输出,最好的地方是这些功能可以通过一个配置文件来灵活的进行配置,而不需要修改程序代码.在应用程序中输出日志有三个目的:<o:p></o:p>
1) 监视代码变量的变化情况,把详细信息记录到文件中,进行统计分析.<o:p></o:p>
2) 跟踪代码运行轨迹,作为日后审计的依据.<o:p></o:p>
3) 担当集成开发环境中的调试器的作用,向文件和控制器打印代码的调试信息.<o:p></o:p>
学习Log4j最重要的是首先要了解两个常用的接口:Log和LogFactory.首先说一说Log接口.通用日志包把日志消息分为6个级别:<o:p></o:p>
1) fatal致命的<o:p></o:p>
2) error错误<o:p></o:p>
3) warn警告<o:p></o:p>
4) info信息<o:p></o:p>
5) debug调试<o:p></o:p>
6) trace细节<o:p></o:p>
其中级别按照以上的顺序,org.apache.commons.logging.Log接口代表日志器,它提供<o:p></o:p>
一组输出日志的方法.例如fatal(Object message)参数都是一个对象,要注意的是只有当它输出日志的级别大于或者等于为日志配置的级别的时候,这个方法才会被执行.Log接口还提供了一组判断是否允许输出特定级别日志信息的方法,很简单例如isFatalEnabled()在程序输出某种级别的日志消息之前,提倡先调用以上的方法来判断该级别的日志是否允许输出,这有助于提高应用的性能.这种判断主要是为了提高性能,避免执行多余的操作.<o:p></o:p>
以上阐述了重要的Log接口,下面简单说明一下LogFactory接口,这个接口也和Log接口一样在logging包中,接口提供了获得日志器实例的两个静态方法如下:<o:p></o:p>
public static Log getLog(String name)throws LogConfigurationException;<o:p></o:p>
public static Log getLog(Class class)throws LogConfigurationException;<o:p></o:p>
第一个getLog()方法name参数作为日志器的名字,第二个getLog()方法以class参数指定的类的名字作为日志器的名字.<o:p></o:p>
在强调可重用组件的今天,除了自己从头到尾开发一个可重用的日志操作类以外,还有一个Apache为我们提供的一个强有力的现成的日志操作包Log4j.主要由三大组件构成:<o:p></o:p>
1) Logger:负责生成日志,并能够对日志信息进行分类筛选.<o:p></o:p>
2) Appender:定义了日志信息输出的目的地,指定日志信息应该被输出到什么地方.<o:p></o:p>
3) Layout:指定日志信息的输出格式.<o:p></o:p>
以上的三个组件协同工作,使得开发者能够依据日志信息类别记录信息,并能够在程序运行期间,控制日志信息的输出格式以及日志的存放地点.Log4j的Appender组件决定日志输出到什么地方,目前Log4j的Appender支持将日志信息输出到控制台Console,文件,GUI组件.一个Logger可以同时对应多个Appender也就是说一个Logger的日志信息可以同时输出在多个目的地上.例如可以为rootLogger配置两个Appender,一个是file一个是console可以这样写:log4j.rootLogger=warn.file.console然后可以用appender.console或者是appender.file来指定具体的控制台或者文件.当以上的都设置好了以后还需要配置Layout组件,主要是解决日志的输出格式,它的类型有:HTMLLayout(html格式),PattemLayout(可以灵活的指定布局模式),SimpleLayout(包含日志信息级别和信息的字符串)TTCCLayout(包含日志生产时间,线程和类别等信息).通过如上的研究已经可以配置Log4j了,然后就可以通过Log4j的API来操作日志了.如果要在Web应用中使用Log4j,需要创建一个配置文件配置Log4j的环境,然后就可以在其他的Web组件中获取Logger对象并输出日志.下面展示一个局部的Log4j,这里只是举例Log4j的配置文件和在具体的Action中进行调用,如下:<o:p></o:p>
1) 将Log4j的jar文件copy到WEB-INF的lib目录下.<o:p></o:p>
2) 创建Log4j的配置文件log4j.properties存放在classes目录下.<o:p></o:p>
Log4j.rootLogger=INFO,console,file<o:p></o:p>
Log4j.appender.console=org.apache.log4j.ConsoleAppender<o:p></o:p>
Log4j.appender.file=org.apache.log4j.RollingFileAppender<o:p></o:p>
Log4j.appender.file=e:/log/log.txt<o:p></o:p>
Log4j.appender.console.layout=org.apache.log4j.PattemLayout<o:p></o:p>
Log4j.appender.console.layout.ConversionPattrm=%t%p-%m%n<o:p></o:p>
Log4j.appender.file.layout=rog.appache.log4j.HTMLLayout<o:p></o:p>
Log4j.appender.file.layout.ConversionPattem=%t%p-%m%n<o:p></o:p>
配置文件配置好了,在Action里调用我就不用详细写了,很简单,就是引入logging的包,然后在execute()方法中通过Log log=LogFactory.getLog(“name”);获取具体的Log对象,在通过log.fatal(“信息”);类似的方法操作日志,还可以通过isDebugEnbled()等方法判断日志的输出.<o:p></o:p>
回顾一下Log4j主要三个组件构成:Logger,Appender,Layout,Logger控制日志信息的输出,Appender决定输出的目的地,Layout决定日志输出的格式.Log4j允许客户在配置文件文件中灵活的配置这些组件,然后读取配置文件中并配置Log4j环境,然后就可以在程序中任何要输出日志的地方调用适当的方法,这样对于日后程序的调试有着重大的作用.
分享到:
相关推荐
本教程将深入浅出地教你如何有效地利用log4j进行日志管理,包括配置、API使用以及实践中的最佳实践。 首先,理解Log4j的基本概念至关重要。Log4j由三个核心组件构成:Logger(日志器)、Appender(输出端)和Layout...
这篇教程将深入浅出地介绍如何使用log4j进行日志记录。 首先,log4j是一个开源的日志记录工具,由Apache软件基金会开发,主要服务于Java应用程序。它的核心组件包括Logger(日志器)、Appender(输出端)和Layout...
- **深入浅出**:作者通过通俗易懂的语言和丰富的实例帮助读者理解和掌握复杂的概念和技术点。 - **与时俱进**:尽管本书出版于2005年,但其中很多原理仍然适用于现代软件开发环境,具有较高的参考价值。 ### 四、...
MyBatis集成了多种日志框架,如Log4j、Logback等,帮助开发者调试和追踪问题。同时,MyBatis提供了丰富的异常类型,如SqlSessionException、ResultMapException等,用于捕获和处理各种可能出现的问题。 总之,"深入...
【深入浅出SpringBoot的核心原理1】 在Spring Boot框架中,Starter扮演着至关重要的角色。Starter可以被视为一个个预封装的模块,它们包含了特定功能所需的所有依赖,并且能够根据运行环境自动配置Bean。比如,当...
《MyBatis 深入浅出》是一本旨在引导初学者从入门到精通的教程,专注于MyBatis这一流行的Java持久层框架。MyBatis是一个优秀的轻量级框架,它解决了传统JDBC中的繁琐代码问题,使得数据库操作更加简便易行。本教程将...
《深入浅出Hibernate源代码》是一本旨在帮助开发者深入了解Hibernate框架源码的教程。Hibernate作为Java领域中的一个著名ORM(对象关系映射)框架,它极大地简化了数据库操作,使得开发者能够更加专注于业务逻辑,而...
在`<settings>`标签下,设置`logImpl`为`LOG4J`,确保MyBatis使用Log4j进行日志输出。 `configuration.xml`中的`<environments>`标签定义了不同环境下的数据源和事务管理器。这里,`default="development"`表示默认...
### 深入浅出Dubbo,微服务必学 #### 一、Dubbo简介 Dubbo是一款由阿里巴巴开源的分布式服务框架,旨在为开发者提供高性能、透明化的RPC远程服务调用方案,以及SOA服务治理方案。Dubbo的核心功能包括远程通信、...
**Java私塾:深入浅出学Hive——Hive Shell基本操作** 在大数据处理领域,Apache Hive 是一种基于 Hadoop 的数据仓库工具,它允许用户使用 SQL 类似的查询语言(HiveQL)来管理和处理存储在 HDFS 上的大量数据。...
这本书深入浅出地介绍了如何使用Spring Boot构建高效、简洁的Java应用程序。随书源码提供了丰富的示例,使读者能够通过实际操作加深理解。 Spring Boot是由Pivotal团队开发的用于简化Spring应用初始搭建以及开发...
本资料包“技术分析图解”旨在深入浅出地阐述这一复杂的主题,通过图形化的方式使炒股知识变得更加易懂。 技术分析的核心理念是历史会重演,市场价格反映了所有已知的信息。它主要依赖于图表和各种技术指标,如趋势...
本书语言深入浅出、通俗易懂,无论对于java web开发的新手还是行家来说,本书都是精通tomcat和开发java web应用的必备的实用手册。本书还可作为高校相关专业学生学习java web开发的参考书,以及企业java web培训...
本书语言深入浅出、通俗易懂,无论对于Java Web开发的新手还是行家来说,本书都是精通Tomcat和开发Java Web应用的必备的实用手册。本书还可作为高校相关专业学生学习Java Web开发的参考书,以及企业Java Web培训教材...
本书语言深入浅出、通俗易懂,无论对于java web开发的新手还是行家来说,本书都是精通tomcat和开发java web应用的必备的实用手册。本书还可作为高校相关专业学生学习java web开发的参考书,以及企业java web培训...
本书语言深入浅出、通俗易懂,无论对于java web开发的新手还是行家来说,本书都是精通tomcat和开发java web应用的必备的实用手册。本书还可作为高校相关专业学生学习java web开发的参考书,以及企业java web培训...
本书语言深入浅出、通俗易懂,无论对于java web开发的新手还是行家来说,本书都是精通tomcat和开发java web应用的必备的实用手册。本书还可作为高校相关专业学生学习java web开发的参考书,以及企业java web培训...
本书语言深入浅出、通俗易懂,无论对于Java Web开发的新手还是行家来说,本书都是精通Tomcat和开发Java Web应用的必备的实用手册。本书还可作为高校相关专业学生学习Java Web开发的参考书,以及企业Java Web培训教材...
本书语言深入浅出、通俗易懂,无论对于Java Web开发的新手还是行家来说,本书都是精通Tomcat和开发Java Web应用的必备的实用手册。本书还可作为高校相关专业学生学习Java Web开发的参考书,以及企业Java Web培训教材...