您的位置:首页 > 其它

优秀博客收集

2014-02-13 11:38 253 查看
log4j源码分析

深入Log4J源码之Layout[转]

摘要: Layout负责将LoggingEvent中的信息格式化成一行日志信息。对不同格式的日志可能还需要提供头和尾等信息。另外有些Layout不会处理异常信息,此时ignoresThrowable()方法返回false,并且异常信息需要Appender来处理,如PatternLayout。Log4J自身实现了7个Layout类,我们可以通过继承自Layout类以实现用户自定义的日志消息格式。Log4J中已定义的Layout类结构如图:测试类简单的写了一个功能性测试的类,从而对不同Layout的输出有比较直观的了解。为了简单起见,所有的测试都打印到控制台。1publicclassLayoutTest{阅读全文
posted @ 2013-02-02 16:12 duanxz 阅读(113)
| 评论 (0) 编辑

深入Log4J源码之Appender[转]

摘要: Appender负责定义日志输出的目的地,它可以是控制台(ConsoleAppender)、文件(FileAppender)、JMS服务器 (JmsLogAppender)、以Email的形式发送出去(SMTPAppender)等。Appender是一个命名的实体,另外它还包含了对 Layout、ErrorHandler、Filter等引用:public interface Appender { void addFilter(Filter newFilter); public Filter getFilter();
public void clearFilters...阅读全文
posted @ 2013-02-01 18:24 duanxz 阅读(129)
| 评论 (0) 编辑

深入Log4J源码之LoggerRepository和Configurator[转]

摘要: LoggerRepository从字面上理解,它是一个Logger的容器,它会创建并缓存Logger实例,从而具有相同名字的Logger实 例不会多次创建,以提高性能。它的这种特性有点类似Spring的IOC概念。Log4J支持两种配置文件:properties文件和xml文件。 Configurator解析配置文件,并将解析后的信息添加到LoggerRepository中。LogManager最终将 LoggerRepository和Configurator整合在一起。LoggerRepository接口LoggerRepository是一个Logger的容器,它负责创建、缓存Logger实阅读全文
posted @ 2013-02-01 17:42 duanxz 阅读(60)
| 评论 (0) 编辑

log4j源码深入

摘要: Log4J将写日志功能抽象成七个核心类/接口:Logger、LoggerRepository、Level、LoggingEvent、Appender、Layout、ObjectRender。其类图如下:更详细的,实现Log4J主要功能相关的类图:其实Log4J最核心的也就5个类:Logger用于对日志记录行为的抽象,提供记录不同级别日志的接口;Level对日志级别的抽象;Appender是对记录日志形式的抽象;Layout是对日志行格式的抽象;而LoggingEvent是对一次日志记录过程中所能取到信息的抽象。另外两个LoggerRepository是Logger实例的容器,而ObjectRe阅读全文
posted @ 2013-01-28 17:02 duanxz 阅读(354)
| 评论 (0) 编辑

Log4j类图
posted @ 2013-01-23 09:41 duanxz 阅读(68)
| 评论 (0) 编辑

深入Log4J源码之Appender

摘要: 简单的,在配置文件中,Appender会注册到Logger中,Logger在写日志时,通过继承机制遍历所有注册到它本身和其父节点的Appender(在additivity为true的情况下),调用doAppend()方法,实现日志的写入。在doAppend方法中,若当前Appender注册了Filter,则doAppend还会判断当前日志时候通过了Filter的过滤,通过了Filter的过滤后,如果当前Appender继承自SkeletonAppender,还会检查当前日志级别时候要比当前Appender本身的日志级别阀门要打,所有这些都通过后,才会将LoggingEvent实例传递给Layo阅读全文
posted @ 2013-01-20 17:57 duanxz 阅读(193)
| 评论 (0) 编辑

Log4j的扩展

摘要: Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输出地;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。那么是不是这样,我们就可以完全使用log4j,而不需要扩展定制了呢?1、基本介绍Log4j Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输出地;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些.阅读全文
posted @ 2012-07-11 14:39 duanxz 阅读(511)
| 评论 (0) 编辑

运行时切换Log4j日志策略

摘要: 动态切换日志级别:做一个产品或者项目,在测试时一般要打印详细的log,发布以后,因为打印日志会损失性能,所以通常在生产机上将log4j级别设置为最高,以提高效率,一旦客户那里出了问题,需要查看详细的日志信息来跟踪问题,此时打印日志就是很重要的事情。这就需要在应用不重启的情况下,动态切换Log4j日志策略了。好在Log4j已两类实现了,一是修改log4j的配置文件,二是通过Logger.setLevel()方法。1、修改log4j的配置文件:这个监控过程log4j已经做好了,只需要我们启动它就可以了,每隔一分钟,log4j会对比配置文件是否有修改,如果有修改,会重新加载配置文件.DOMConfi阅读全文
posted @ 2012-07-11 14:30 duanxz 阅读(529)
| 评论 (0) 编辑

log4j输出多个自定义日志文件,动态配置路径[转]

摘要: log4j的强大功能无可置疑,但实际应用中免不了遇到某个功能需要输出独立的日志文件的情况,怎样才能把所需的内容从原有日志中分离,形成单独的日志文件呢?其实只要在现有的log4j基础上稍加配置即可轻松实现这一功能。 先看一个常见的log4j.properties文件,它是在控制台和myweb.log文件中记录日志:log4j.rootLogger=DEBUG, stdout, logfilelog4j.category.org.springframework=ERRORlog4j.category.org.apache=INFOlog4j.appender.stdout=org.apache..阅读全文
posted @ 2012-07-11 10:06 duanxz 阅读(71)
| 评论 (0) 编辑

log4j源码分析

摘要: 面对这近20000行代码,188个类,还真是有点不知从何下手。万事开头难嘛!既然使用Log4J是从Category类开始的,那也从它开始分析。 Category类位于org.apache.log4j包内,检查它的类层次图,它实现了AppenderAttachable接口。 AppenderAttachable接口同样位于org.apache.log4j包内,查看它的源码,很明显,它可以被视为一个Appender的容器,所以Category类也可以当作是Appender的容器。 但是,事情没这么简单,在Category类中有个私有域:AppenderAttachableImpl
aai ...阅读全文
posted @ 2012-07-10 16:02 duanxz 阅读(1693)
| 评论 (1) 编辑

Log4J学习笔记

摘要: 一、简介 在程序中输出信息的目的有三:一是监视程序运行情况;一是将程序的运行情况记录到日志文件中,以备将来查看;一是做为调试器。但信息输出的手段不仅限于System.out.println()或System.out.print(),还有日志记录工具可以选择。与System.out.pringln()和System.out.print()相比,日志记录工具可以控制输出级别,并且可以在配置文件中对输出级别进行设置,这样开发阶段的信息在程序发布后就可以通过设置输出级别来消除掉,而无须对代码进行修正了。现在流行的日志记录工具很多,Log4J就是其中的佼佼者。
Log4J是由著名开源组织Apache..阅读全文
posted @ 2012-07-10 15:19 duanxz 阅读(244)
| 评论 (0) 编辑

一种Java日志系统框架的设计与实现

摘要: 1 简介 日志系统是一种不可或缺的跟踪调试工具,特别是在任何无人职守的后台程序以及那些没有跟踪调试环境的系统中有着广泛的应用。 长期以来, 日志系统作为一种应用程序服务,对于跟踪调试、程序状态记录、崩溃数据恢复都有非常现实的意义。这种服务通常以两种方式存在: 1. 日志系统作为服务进程存在。Windows中的的事件日志服务就属于这种类型,该类型的日志系统通常通过消息队列机制将所需要记录的日志由日志发送端发送给日志服务。日志发送端和日志保存端通常不在同一进程当中,日志的发送是异步过程。这种日志服务通常用于管理员监控各种系统服务的状态。
2. 日志系统作为系统调用存在。Java世界中的日志系...阅读全文
posted @ 2012-07-10 10:59 duanxz 阅读(174)
| 评论 (0) 编辑

日志系统设计

摘要: 一、重要性 日志系统在整个系统架构中的重要性可以称得上基础的基础,但是这一点,都容易被大多数人所忽视。因为日志在很多人看来只是printf。在系统运行期间,是很难step by step的,所以只能根据系统的运行轨迹来推断错误出现的位置,这往往也是唯一的资料,特别是在高可靠性的情况下。 从更大方面的范围来说,日志系统是运营维护的范畴。但小的方面来说,这是必须的调试的手段。在多年的开发经验来看,日志系统必须被我们重视的。二、解决问题 日志系统的主要解决的问题是记录系统的运行轨迹,在这个基础上,进行跟踪分析错误,审计系统运行流程。在高可靠的系统中,是不允许系统运行终止的。日志系统的内容可以分为2类阅读全文
posted @ 2012-07-10 10:55 duanxz 阅读(684)
| 评论 (1) 编辑

Java日志系统研究--转

摘要: 日志,源于log,有航海日志的意思。指记录海员记录每天的行程,生活及发生的事件。在软件开发领域,用来监控代码中变量变化,跟踪代码运行的轨迹,在开发环境中担当调试器作用,向控制台或文件输出信息。几乎所有的软件开发语言(平台)都有自己的日志系统,java,.net,ruby,php等。在java领域,存在大量的日志组件,open-open收录了21个日志组件。从 功能上讲,这些可以分为三类,一是日志工具类,它实现了日志的记录,格式化和级别的划分,代表为logback,simplelog。二是日志系统,提供
了完整的框架功能并实现了日志记录。代表为jul(jdk提供的日志框架),log4j(apac阅读全文
posted @ 2012-07-10 10:49 duanxz 阅读(100)
| 评论 (0) 编辑

http://www.cnblogs.com/duanxz/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: