Log4J的使用.ppt

上传人:本田雅阁 文档编号:2976971 上传时间:2019-06-16 格式:PPT 页数:24 大小:223.51KB
返回 下载 相关 举报
Log4J的使用.ppt_第1页
第1页 / 共24页
Log4J的使用.ppt_第2页
第2页 / 共24页
Log4J的使用.ppt_第3页
第3页 / 共24页
Log4J的使用.ppt_第4页
第4页 / 共24页
Log4J的使用.ppt_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《Log4J的使用.ppt》由会员分享,可在线阅读,更多相关《Log4J的使用.ppt(24页珍藏版)》请在三一文库上搜索。

1、Log4J的使用,摘要,一、介绍 二、安装 三、Log4j的三个主要概念 四、外部配置文件 五、小结,介绍,Log4J是APACHE组织提供的一个日志组件,利用它可以在不更改程序的情况下,通过修改配置文件来调控日志的输出。 绝大多数的大型开发项目都有它们自己专门用于记录程序日志和对程序跟踪调试的API。许多经验证明,调试信息的管理在软件开发过程中扮演了十分重要的角色。,介绍,日志管理通常提供了以下的几点好处: 首先,它能在程序运行过程中精确的提供运行时的上下文(context)方便我开发人员找到Bug,一旦在程序中加入了Log 输出的代码,程序运行过程中就能自动的生成并输出Logging信息。

2、 其次,Log信息可以输出到不同的地方(控制台,文件,日志服务器等等)以备以后研究。 最后,除了在开发过程中发挥它的作用外,一个功能足够强大的日志记录开发包能当作一个审计工具(audit tool)使用。,介绍,同时,Logging 确实也存在一些缺陷,比如,它影响了程序运行的速度,增加了代码的开销,增加了许多无谓的输出。为了减少这些负面因数的影响,Log4j 被设计得尽量的高效和灵活。因为,很少有哪个应用程序(系统)把记录日志当作主要的功能,Log4j的开发人员尽量使Log4j容易理解和使用。,安装,1. 从http:/jakarta.apache.org/log4j/docs/downlo

3、ad.html下载log4j发行版。 2. 解压存档文件到合适的目录中。 3. 添加文件 dist/lib/log4j-(x).jar 到 CLASSPATH 环境变量中。 4.在应用的classes根目录下,放置log4j.properties进行相关配置,Log4j的三个主要概念,1. 公共类 Logger Logger 负责处理日志记录的大部分操作。 2. 公共接口 Appender Appender 负责控制日志记录操作的输出。 3. 公共抽象类Layout Layout 负责格式化Appender的输出。,Log4j的三个主要概念,软件开发人员能通过这三大构件实现根据日志的类型和优先

4、级进行记录,并且能在程序运行时去控制log信息输出的格式(formatted)和往什么地方输出(控制台、log文件),让我们依次去了解他们。,(一)Logger,日志记录器(Logger)是日志处理的核心组件。Log4j具有5种正常级别(Level)。 以下内容摘自Log4jAPI(http:/jakarta.apache.org/log4j/docs/api/index.html),(一)Logger, static Level DEBUG DEBUG Level指出细粒度信息事件对调试应用程序是非常有帮助的。 static Level INFO INFO level表明 消息在粗粒度级别上

5、突出强调应用程序的运行过程。 static Level WARN WARN level表明会出现潜在错误的情形。 static Level ERROR ERROR level指出虽然发生错误事件,但仍然不影响系统的继续运行。,(一)Logger, static Level FATAL FATAL level指出每个严重的错误事件将会导致应用程序的退出。 另外,还有两个可用的特别的日志记录级别: (以下描述来log4j API http:/jakarta.apache.org/log4j/docs/api/index.html): static Level ALL ALL Level是最低等级的

6、,用于打开所有日志记录。 static Level OFF OFF Level是最高等级的,用于关闭所有日志记录。,(一)Logger,日志记录器(Logger)的行为是分等级的: 日志记录器(Logger)将只输出那些级别高于或等于它的级别的信息。如果没有设置日志记录器(Logger)的级别,那么它将会继承最近的祖先的级别。因此,如果在包com.foo.bar中创建一个日志记录器(Logger)并且没有设置级别,那它将会继承在包com.foo中创建的日志记录器(Logger)的级别。如果在com.foo中没有创建日志记录器(Logger)的话,那么在com.foo.bar中创建的日志记录器(

7、Logger)将继承root 日志记录器(Logger)的级别,root日志记录器(Logger)经常被实例化而可用,它的级别为DEBUG。,(一)Logger,有很多方法可以创建一个日志记录器(Logger),下面方法可以取回root日志记录器: Logger logger = Logger.getRootLogger(); 还可以这样创建一个新的日志记录器: Logger logger = Logger.getLogger(“MyLogger“); 比较常用的用法,就是根据类名实例化一个静态的全局日志记录器: static Logger logger = Logger.getLogger(

8、test.class);,(一)Logger,所有这些创建的叫“logger“的日志记录器都可以用下面方法设置级别: logger.setLevel(Level)Level.WARN); 可以使用7个级别中的任何一个; Level.DEBUG, Level.INFO, Level.WARN, Level.ERROR, Level.FATAL, Level.ALL and Level.OFF.,(二)Appender,Appender 控制日志怎样输出。下面列出一些可用的Appender 1、 ConsoleAppender:使用用户指定的布局(layout) 输出日志事件到System.out

9、或者 System.err。默认的目标是System.out 2、FileAppender 把日志事件写入一个文件 3、RollingFileAppender 扩展FileAppender备份容量达到一定大小的日志文件。 4、DailyRollingFileAppender 扩展FileAppender,因此多个日志文件可以以一个用户选定的频率进行循环日志记录,(二)Appender,5. SMTPAppender 当特定的日志事件发生时,一般是指发生错误或者重大错误时,发送一封邮件。 6. SocketAppender 给远程日志服务器(通常是网络套接字节点)发送日志事件(LoggingEv

10、ent)对象。 7. SocketHubAppender 给远程日志服务器群组(通常是网络套接字节点)发送日志事件(LoggingEvent)对象。 8. SyslogAppender给远程异步日志记录的后台精灵程序(daemon)发送消息。 9. TelnetAppender 一个专用于向只读网络套接字发送消息的log4j appender。 我们还可以实现 Appender 接口,创建以自己的方式进行日志输出的Appender。,(三)Layout,Appender必须使用一个与之相关联的 Layout,这样它才能知道怎样格式化它的输出。当前,log4j具有三种类型的Layout: 1.

11、HTMLLayout 格式化日志输出为HTML表格。 2. PatternLayout 根据指定的 转换模式格式化日志输出,或者如果没有指定任何转换模式,就使用默认的转换模式。 3. SimpleLayout 以一种非常简单的方式格式化日志输出,它打印级别 Level,然后跟着一个破折号“-“ ,最后才是日志消息。,五、外部配置文件,在程序中添加这些Log信息的输出语句所须的工作量是不可小视的,调查资料表明,在程序开发过程中,用于输出调试信息所需的代码量估计要占到整个应用程序总代码量的4 %左右。因此,即便是最一般大小的应用程序也需要至少包含有几千行的log语句。这样,不需要我们人工地去维护这

12、些log输出的语句就变的十分重要了。 虽然,Log4j开发包能够在代码中去灵活控制log输出,但是通过配置文件去实现Log信息的控制比在代码中实现灵活得多。目前,Log4j的配置文件支持XML格式和JAVA properties (key=value) 格式。,五、外部配置文件示例,log4j.rootLogger=DEBUG, A1 log4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout

13、.ConversionPattern=%-4r %t %-5p %c %x - %m%n #例如,转化模式为“%r %t %-5p %c - %m%n” 的PatternLayout 将输出 #类似如下的信息: #176 main INFO org.foo.Bar - Located nearest gas station. #第一个栏位是自从程序开始后消逝的毫秒数。 #第二个栏位是做出日志的线程。 #第三个栏位是log的级别。 #第四个栏位是日志请求相关的logger的名字。而“-”后的文字是信息的表述。,原代码,package com.zenggang; import org.apache

14、.log4j.Logger; import org.apache.log4j.*; public class Log4jTest private static final Logger logger = Logger.getLogger(Log4jTest.class); public static void main(String args) logger.debug(“111“); logger.info(“222“); logger.warn(“333“); logger.error(“444“); logger.fatal(“555“); if (logger.isDebugEnabl

15、ed() logger.debug(“main(String) - 这是println打印的“); ,Log4j.properties内容,log4j.rootLogger=DEBUG,A1,R #log4j.rootLogger=INFO,A1,R # ConsoleAppender 输出 log4j.appender.A1=org.apache.log4j.ConsoleAppender log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%-d

16、yyyy-MM-dd HH:mm:ss,SSS %c-%p %m%n # File 输出 一天一个文件,输出路径可以定制,一般在根路径下 log4j.appender.R=org.apache.log4j.DailyRollingFileAppender log4j.appender.R.File=c:/blog_log.txt log4j.appender.R.layout=org.apache.log4j.PatternLayout log4j.appender.R.layout.ConversionPattern=%dyyyy-MM-dd HH:mm:ss,SSS %t %c %p -

17、%m%n,将日志文件保存在web应用中,由于需要在log4j.properties中指定日志文件的输出路径,而web应用的路径是不确定的,为了保证将日志信息保存在web应用中,需要编写一个实现ServletContextListener接口的监听器,在init方法中将web应用的路径注册到System的properties中,如: ServletContext servletContext =event.getServletContext(); String path = servletContext.getRealPath(“/“); System.setProperty(“webapp.r

18、oot“, path); 在log4j.properties中指定日志文件的输出路径时,使用$webapp.root引用web应用的路径,如: log4j.appender.myAppender.File=$webapp.root/jdbc.log,七、小结,Log4j 是一个非常流行的基于java的log 处理开发包。它与其它的log开发包(如IBM的Jlog以及SUN 在JDK1.4中包含的Log API)最明显的区别是运用了Category继承的特性。依赖于这种category的层次关系,使用者就能做到准确的控制每一个log语句的输出,这样大大减少了多余log信息的输出和尽可能的减少对整个系统性能的影响。,七、小结,Log4j的其中一个最有令人称道的一个方面是它的可操作性,使用者一旦在程序中添加了用于log输出的代码,他们就能通过一个外部的配置文件对这些log信息进行运行时控制而无需重新编译源代码。并且,使用者能够有选择的开启或关闭一些log信息的输出。并能够按照自己喜欢的格式将这些log信息输出到许多不同的输出设备中。Log4j还在性能方面做了最大程度的优化。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1