![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
log4j基础
文章平均质量分 83
andy2cloud
这个作者很懒,什么都没留下…
展开
-
Log4J学习【十七】Log4j的默认启动流程二
前面讲了在application方式下的测试。在web环境下,要配置Log4j也是非常简单的事情。但是需要注意一些问题。 第一,大部分情况下,把log4j.xml或者log4j.properties文件直接放到对应web应用的webapps/classes/文件夹下面即可。这种情况下,各个web应用会分别使用各自的配置文件来完成log4j的初始化。 第二,如果需要不用的应用使用转载 2014-12-17 14:28:23 · 444 阅读 · 0 评论 -
Log4J学习【二十一】常用的Appender之FileAppender
我们来继续考虑一下FileAppender,假设现在我们把产品已经部署完成,设置好FileAppender和Level,日志就慢慢的在文件中记录着。突然有一天,我们想要查看一下日志文件了,可能会发现几个问题:1,日志文件可能已经非常庞大了,打开非常缓慢,而且文件越大,做日志的速度会越来越慢。针对这种情况,可能大家很容易的就想到,我们能自己继承一下FileAppender,让文件到达一定的大小,就重转载 2014-12-17 15:03:26 · 5889 阅读 · 0 评论 -
Log4J学习【二十九】常用的Layout之PatternLayout
首先来说说这个pattern,在pattern中,规定格式的总是一个字符,比如上面的r,t,p等,在某些情况下,这些字符可以带一些前缀或者后缀信息来规定额外的格式,这个我们待会再看,并且,所有的代表内容的字符,必须放在%之后,才有意义,比如%r[%t]和%r[t]就是完全不同的两个模式,第一个模式中,r和t都具有参数意义,而第二个模式中,t就只是一个输出值了,就不会被特定的内容所替换。转载 2014-12-17 15:12:44 · 1619 阅读 · 0 评论 -
Log4J学习【二】第一个日志示例
首先下载Log4J包,最新的代码版本为Log4J 1.2。当然,Log4j 2现在也发布了,但是使用的有限,这个我们后面再慢慢介绍。下载地址为:http://logging.apache.org/log4j/1.2/download.html下载完成后解压。Log4J是一个很单纯的代码包,他本身不再依赖任何其他的框架。所以,直接把log4j-1.2.17.jar拷贝到应用classpath转载 2014-12-17 14:19:31 · 642 阅读 · 0 评论 -
Log4J学习【十三】Properties文件中能够定义的配置项的格式和示例二
3,配置Logger: 当配置完成Appender和其对应的Layout之后,就需要把Appender绑定在Logger之上了。Logger的配置主要分两类,一类是对RootLogger的配置,一类是对自定义Logger的配置。先来看看rootLogger的配置格式:log4j.rootLogger=[LEVEL],[Appender1,Append2...AppendN]转载 2014-12-17 14:26:23 · 384 阅读 · 0 评论 -
Log4J学习【二十】ConsoleAppender
前面已经多次用到了ConsoleAppender,我们已经知道,ConsoleAppender就是直接把日志内容输出到控制台上面,这里我们再来看看他的一些配置项。还是定位到ConsoleAppender代码。首先ConsoleAppender是继承WriterAppender的,所以不用多说,ConsoleAppender也有encoding和immediateFlush两个配置项。作用不在多说,转载 2014-12-17 14:37:12 · 10787 阅读 · 0 评论 -
Log4J学习【二十三】常用的Appender之SocketAppender
前面这几个Appender就是Log4J提供的基于文件系统的Appender。当然,在一些特殊的需要记录到文件的Appender来说,我们只需要选择一个合适的Appender来继承并完成自己的逻辑即可。关于自定义Appender,待会再看。下面来看几个比较特殊的Appender。 前面所有介绍的Appender都有一个共同的特点,就是他们都需要配置一个Layout对象,下面要介绍的这转载 2014-12-17 15:05:11 · 2589 阅读 · 0 评论 -
Log4J学习【三十一】常用的Layout代码结构
在简单的看了常用的Layout的使用方式后,我们来看看Layout的代码结构。因为Layout本身做的事情比Appender单纯很多,所以Layout的代码都是非常简洁的。我们先来看看Layout类:public abstract class Layout implements OptionHandler { abstract public String format(Logging转载 2014-12-17 15:13:22 · 670 阅读 · 0 评论 -
Log4J学习【三十七】ObjectRenderer下
另外,在Log4J中,ObjectRenderer之间也是遵循类型继承关系的。假如现在有一个新的对象叫User,并且Student继承User类:public class User { private Long id; private String name; public User(Long id, String name) { this.id转载 2014-12-17 15:18:14 · 558 阅读 · 0 评论 -
Log4J学习【二十七】常用Appender使用例子
看完WriterAppender的代码之后,我们就随便挑选两个稍微简单的ConsoleAppender和FilterAppender来看看,我们真正平时在使用的Appender是怎么实现的。首先是ConsoleAppender:public void activateOptions() { if (follow) { if (target.equal转载 2014-12-17 15:11:58 · 1435 阅读 · 0 评论 -
Log4J学习【三】复杂一点的例子一
上面我们看了一个使用Log4J的最简单的示例,在这个示例里面,我们只在一个类中使用标准的配置打印了一行日志信息。接下来,我们简单模拟几个常见的日志情况,来看看Log4J的一些对日志的控制能力。第一个例子,我们来看看Log4J对日志级别的控制。在Log4J中,日志是可以分成不同级别的,这和我们做日志的想法其实是保持一致的。有的时候,我们记录的信息可能是非常细节的,比如读取了一个配置文件,我们需要转载 2014-12-17 14:20:48 · 499 阅读 · 0 评论 -
Log4J学习【十一】Properties配置方式测试
上一章我们讲了Properties配置方式 下面来运行一下测试:0 [main] INFO cd.itcast.log.Configure - using default db.properties0 [main] INFO cd.itcast.log.Configure - using config file in classpath:db.properti转载 2014-12-17 14:25:33 · 407 阅读 · 0 评论 -
Log4J学习【十四】XML配置方式
在Log4j中使用XML的配置方式,首先从根本上讲,和使用properties文件配置Log4j的方式和内容应该是大同小异的。所以,在学习XML配置方式的时候,我们应该采用对比+猜测的方式来完成。在学习一门技术的时候,特别对于细节的知识点,最好不要去死记硬背,多使用猜测和举一反三的方法,学习起来会更加轻松。 首先,要使用XML的方式来配置Log4j,我们至少要准备一份XML配置文件,并且转载 2014-12-17 14:26:49 · 968 阅读 · 0 评论 -
Log4J学习【二十四】常用的Appender的使用一
下面,我们来看看到底这些Appender是怎么运行的,他们的结构是怎样,代码是怎样的。学习了这些,我们就可以更轻松的使用SMTPAppender这些我们不了解的Appender,更重要的是,我们完全可以很轻松的自定义我们想要的Appender了。 首先先来看看我们已经学习的几个Appender的继承体系结构: 首先要介绍的是两个非常重要的接口,Appender和Op转载 2014-12-17 15:10:37 · 1026 阅读 · 0 评论 -
Log4J学习【二十五】常用的Appender的使用二
接下来,Log4J提供了一个AppenderSkeleton类来作为最基本的Appender的实现。在这个类里面简单的对Filter和ErrorHandler等做了一些流程性的处理,废话不多说,先来看看代码:public abstract class AppenderSkeleton implements Appender, OptionHandler 首先这是个抽象的类,实现了Ap转载 2014-12-17 15:10:45 · 644 阅读 · 0 评论 -
log4快速介绍
1. log4j输出多个自定义日志文件 log4j的强大功能无可置疑,但实际应用中免不了遇到某个功能需要输出独立的日志文件的情况,怎样才能把所需的内容从原有日志中分离,形成单独的日志文件呢?其实只要在现有的log4j基础上稍加配置即可轻松实现这一功能。 先看一个常见的log4j.properties文件,它是在控制台和myweb.log文件中记录日志: log4j.ro转载 2015-01-08 13:10:54 · 531 阅读 · 0 评论 -
Log4J学习【十二】Properties文件中能够定义的配置项的格式和示例一
今天我们来看看在properties文件中能够定义的配置项的格式和示例。请注意,在看这些格式的时候,不要去死记硬背这些格式,而一定要想清楚,这些格式对应的配置代码;并且要明白,很多格式都是对应着某种对象中的一个属性,所以要看能够做什么样的配置,只需要找到那个类,并查看有哪些属性能够配置即可。 1,设置整个Logger体系的门槛:log4j.threshold=[LEVEL]。比如在配置文转载 2014-12-17 14:25:38 · 558 阅读 · 0 评论 -
Log4J学习【一】Log4J简介
Log4J简介 基本上所有的大型应用,包括我们常用的框架,比如hibernate;spring;struts等,在其内部都做了一定数量的日志信息。为什么要做这些日志信息,在系统中硬编码日志记录信息是调试系统,观察系统运行状态的一种方式。可能大部分程序员都还记得自己最开始写代码的时候,写一个方法总是出错,就喜欢使用System.out.println(“1111111”)之类的代码来查看程转载 2014-12-17 14:18:03 · 438 阅读 · 0 评论 -
Log4J学习【二十六】常用的Appender的使用三
接下来,我们来看看最简单的WriterAppender的实现,很简单,我们要查看WriterAppender,其实就只需要关注append方法的实现和activiteOption方法了。首先WriterAppender类实现了AppenderSkeleton,但是这个类在activiteOption方法中并没有做任何事情,那我们的重点就放在append方法上了: public void转载 2014-12-17 15:11:33 · 1196 阅读 · 0 评论 -
Log4J学习【三十三】错误处理之ErrorHandler
上一章讲的除了三个error方法,可能另外的三个方法还是稍微有些难以理解,我们先来看看Log4J为我们提供的ErrorHandler。 默认情况下,每一个Appender都对应一个默认的ErrorHandler,叫做OnlyOnceErrorHandler,这个errorHandler是在AppenderSkeleton中定义的:protected ErrorHandler erro转载 2014-12-17 15:15:03 · 2661 阅读 · 0 评论 -
Log4J学习【十九】常用的Appender之WriterAppender
首先来看WriterAppender,WriterAppender是一个非常基础的Appender,他可以将LoggingEvent合成的结果直接交给一个Writer对象去处理。通过这个描述,其实我们也能很简单的想到,WriterAppender是不能通过配置脚本来完成配置的,只能允许通过代码的方式指定要输出的Writer。那为什么我们还要学习WriterAppender呢?其实很简单,因为他是后转载 2014-12-17 14:33:05 · 2734 阅读 · 0 评论 -
Log4J学习【二十二】常用的Appender之DailyRollingFileAppender
上一章最后我们提到了DailyRollingFileAppender。 DailyRollingFileAppender提供了按照特定时间生成一份日志文件的方式,这个类的设计比较有灵活。首先,这个类是继承FileAppender的,所以他具有FileAppender相关的所有属性配置,另外,这个Appender仅仅提供了一个额外的配置: datePattern:设置日期格式。这转载 2014-12-17 15:04:13 · 1613 阅读 · 0 评论 -
Log4J学习【三十】常用的Layout之奇葩的Layout
除此上一章讲的PatternLayout之外,Log4J还提供了一些比较奇葩的Layout,比如XMLLayout,XMLLayout能直接把日志信息按照XML的格式输出到控制台,一个简单的示例:log4j.rootLogger=DEBUG,stdoutlog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appende转载 2014-12-17 15:13:08 · 602 阅读 · 0 评论 -
Log4J学习【三十二】错误处理
前面我们在查看Appender代码的时候,发现了ErrorHandler这个东西,下面,我们就来简单的看看,在Appender中的错误处理。 下面我们介绍ErrorHandler,就直接通过ErrorHandler的相关代码来发掘他的使用方式。要学习ErrorHandler首先得来看看他的结构:public interface ErrorHandler extends OptionH转载 2014-12-17 15:14:17 · 625 阅读 · 0 评论 -
Log4J学习【五】Log4J的体系结构之Logger的结构
当我们在描述为系统做日志这个动作的时候,实际上描述了3个点;类似于小学语文学语法一样。做日志,其实就是在规定,在什么地方用日志记录器以什么样的格式做日志。把三个最重要的点抽取出来,即什么地方,日志记录器,什么格式。在Log4J中,就使用了三个最重要的组件来描述这三个要素,即 Logger:日志记录器 Appender:什么地方 Layout:什么格式 下面我转载 2014-12-17 14:22:42 · 516 阅读 · 0 评论 -
Log4J学习【六】Log4J的体系结构之Appender的结构
使用Logger的日志记录方法,仅仅是发出了日志记录的事件,具体日志要记录到什么地方,需要Appender的支持。在Log4J中,Appender定义了日志输出的目的地。在上面所有的示例当中,我们日志输出的目的地都是控制台,在Log4j中,还有非常多的Appender可供选择,可以将日志输出到文件,网络,数据库等等,这个后面再介绍。说到这里,可能有人就已经会思考,既然Logger对象的info()转载 2014-12-17 14:23:15 · 464 阅读 · 0 评论 -
Log4J学习【八】Log4J对3个组件的使用
前面简单的了解了Log4J中最重要的3个组件,下面我们来看看Log4j是怎么使用这3个组件完成当我们调用logger.debug()方法能在控制台上打印出日志信息的。 第一步,继承数体系上的门槛检查:首先当调用info()方法后,Log4J会立刻使用该Logger所在的体系结构中设置的门槛去检查当前日志的级别。如果级别不够,立刻作废当前日志请求。 第二步,Level级别检查:使转载 2014-12-17 14:24:20 · 476 阅读 · 0 评论 -
Log4J学习【九】Log4J的配置
通过前面的示例,我们已经对Log4j的使用方式有了一定的了解。我们再返回去看我们第二个稍微复杂的例子。单看Configure和LogicProcessor两个类,从代码的角度来看,在这两个类中硬编码日志,是没有问题的,也是没法优化的,比如在代码中添加log.info(string),这种代码是必要的;在这种情况下,我应用中所有的类必要引入的也就只是一个Logger类,引入这个复杂性也是我们能够控制转载 2014-12-17 14:24:38 · 341 阅读 · 0 评论 -
Log4J学习【十五】XML的配置方式练习
今天我们来使用XML的配置方式完成几个例子,我们的重点放在XML配置文件上。 练习1:对于包cd.itcast.log和cd.itcast.log2,设置日志级别为INFO,并且cd.itcast.log下面的类使用console输出;cd.itcast.log2下面的类使用file输出。给出测试类:@Testpublic void test(){ DOMConfi转载 2014-12-17 14:27:16 · 440 阅读 · 0 评论 -
Log4J学习【十六】Log4j的默认启动流程一
之前已经看到了使用properties文件或者xml文件配置Log4J的方式。但是,在这两种配置方式中,我们看到,都必须要使用者在整个应用启动之前,使用代码的方式完成Log4J相应配置的读取和加载。我们已经学习了Log4j这么久了,一直会有一个疑问,为什么Log4J就必须让我们自己来配置Log4J?为什么必须让我们自己去写那一段初始化代码?原因其实很简单,在Log4J中,所有的日志总的有一个输出的转载 2014-12-17 14:27:42 · 693 阅读 · 0 评论 -
Log4J学习【四】复杂一点的例子二
上面我们演示了一个稍微复杂一点的例子,在那个例子中,我们使用了不同的日志打印级别,并且控制了打印级别,但是上面的例子仍然是对于一个类的日志控制,我们在这个例子中,来看看,控制不同模块的日志打印。在上面的例子中,我们加入一个新的类,这个类放在一个额外的包中:package cd.itcast.core;import org.apache.log4j.Logger;import转载 2014-12-17 14:22:08 · 545 阅读 · 0 评论 -
Log4J学习【七】Log4J的体系结构之docLayout的结构
Logger规定了输出什么日志,Appender规定了日志输出到哪里,当然,我们还会奢望,以什么样的方式输出日志。这就涉及到之前我们在观察Appender的时候创建ConsoleAppender和FileAppender都需要传入的Layout。在Log4J中,Layout对象提供了以什么样的方式格式化日志。这个对象是绑定在Appender之上的,一般在Appender创建的时候指定。转载 2014-12-17 14:23:26 · 347 阅读 · 0 评论 -
Log4J学习【三十四】错误处理之FallbackErrorHandler
下面,我们来看一个更为复杂和更有配置代表性的ErrorHandler:FallbackErrorHandler。 首先来简单介绍一下FallbackErrorHandler,其实这个ErrorHandler就完整了实现了刚才我们考虑的那种出错情况,当某个Appender失效之后,使用配置给ErrorHandler的另一个备用的ErrorHandler来处理日志输出。在Log4j中,Err转载 2014-12-17 15:15:57 · 1367 阅读 · 0 评论 -
log4j 和slf4j的比较
log4j 大家都知道,就不在多说了,重点说说slf4j;简单日记门面(simple logging Facade for java)SLF4J是为各种logingAPIs提供一个简单统一的接口,从而使得最终用户能够在部署的时候配置自己希望的loging APIs实现准确的说,slf4j并不是一种具体的日志系统,而是一个用户日志系统的facade,允许用户在部署最终应用转载 2015-11-30 12:00:14 · 447 阅读 · 0 评论