`
mabusyao
  • 浏览: 247346 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Log4j 代码学习 - Appender

 
阅读更多

在上一篇文章里,我们故意遗漏了一个重要的接口,AppenderAttachable:

 

public interface AppenderAttachable {
  public void addAppender(Appender newAppender);

  public Enumeration getAllAppenders();

  public Appender getAppender(String name);

  public  boolean isAttached(Appender appender);

  void removeAllAppenders();

   void removeAppender(Appender appender);

  void removeAppender(String name);   
}

顾名思义,继承该接口的类可以attach Appenders, Category类继承了这个借口,因此也提供了相应的API。我们在配置文件里面设置的Appender属性会在配置类中被加载到Logger:Category对象中。

 

然而在Category类中,并没有真正的实现这些API,它将之代理到了其AppenderAttachableImpl变量中。回到第一篇文章中的类图,我们可以知道, AppenderAttachableImpl类同样也继承了AppenderAttachable接口。仔细一看,这里其实用了一个代理模式。

 

而在AppenderAttachableImpl中,维护了一个Appender类型列表,而Appender则是真正做事的人。。。

 

public int appendLoopOnAppenders(LoggingEvent event) {
    int size = 0;
    Appender appender;

    if(appenderList != null) {
      size = appenderList.size();
      for(int i = 0; i < size; i++) {
	appender = (Appender) appenderList.elementAt(i);
	appender.doAppend(event);
      }
    }    
    return size;
  }

 

所以,我们回来看第一章的序列图,并不完整,我们现在来将之补全:

后面我们会继续补全这张图片。

 

Appender的具体实现类并不直接继承Appender,而是继承于Appender的一个抽象实现:AppenderSkeleton,这个类维护了Filter以及Layout的实例,你可以在Log4j配置项中找到Filter以及Layout, 这里不再赘述。 我们常见的XMLAppender,或者HTMLAppender都是继承于该类。

  • 大小: 32.9 KB
分享到:
评论

相关推荐

    aliyun-log-log4j-appender:aliyun-log-log4j-appender

    Log4j Appender 阿里云Log Log4j Appender Apache log4j是一个Apache软件基础项目。 您可以通过Log4j控制日志的目的地。 它可以是控制台,文件,GUI组件,套接字,NT事件日志,系统日志。 您也可以控制每个日志的...

    阿里云java源码-aliyun-log-log4j2-appender:aliyun-log-log4j2-appender

    阿里云java源码Log4j2 附加程序 阿里云日志 Log4j2 Appender Apache Log4j2 是对 Log4j 的升级,与其前身 Log4j 1.x 相比提供了重大改进。 可以通过Log4j2控制日志的目的地。 它可以是控制台、文件、GUI 组件、套接...

    log4j2-elasticsearch:Log4j2 Elasticsearch Appender插件

    log4j2-elasticsearch概述 这是log4j2附加程序插件的父项目,能够将日志批量推送到Elasticsearch集群。 最新发布的代码(1.5.x)可用。 项目包括: log4j2-elasticsearch-core实现的框架提供程序 log4j2-elastic...

    log4j2-所需jar包+配置详解(详细)

    关于配置文件的名称以及在项目中的存放位置  log4j 2.x版本不再支持像1.x中的....如果本地要测试,可以把log4j2-test.xml放到classpath,而正式环境使用log4j2.xml,则在打包部署的时候不要打包log4j2-test.xml即可。

    aliyun-log-logback-appender

    Logback旨在作为流行的log4j项目的后继者。 您可以通过logback控制日志的目的地。 它可以是控制台,文件,GUI组件,套接字,NT事件日志,系统日志。 您也可以控制每个日志的输出格​​式。 您可以通过日志级别控制...

    log4j-2-elastic:Appender for Elasticsearch,具有所有Log4j 2功能的支持

    log4j-2-弹性 我创建了这个项目,以共享和增强附加程序,该附加程序将消息直接记录到集群中。 在某些特定情况下,这种将日志聚合到Elasticsearch中的方法可以很好地替代Elastic Beats。特征该产品包括一些标准和某些...

    Log4j 学习笔记.doc

    Log4j 学习笔记. 1. Log4j的类图 2. Logger:日志写出器 1. Logger的输出方法 2. Logger的命名规则 3. Log level 4. 示例代码 5. 关于logger的两点说明 3. Appender:日志目的地 1. ConsoleAppender 2. ...

    log4j 根据日期和文件大小切分日志

    由公司的项目需要根据日期和文件大小切分log4j日志,所以实现来该appender。本人测试通过,并且在公司的其它项目中已有线上使用,暂时还没发现问题。本人代码有写得不好或者错误的地方,欢迎大家指正,谢谢!!!

    log4j-aws-appenders:写入AWS目标的Log4J 1.2.x,Log4J 2.x和Logback的Appender

    log4j-aws-appenders , 和Appender写入了各种AWS目标: :AWS本地集中式日志管理,提供关键字和时间范围搜索。 :这是向和其他分析目标提供数据的第一步。 :用于实时错误通知。 除了基本的日志输出外,该库还...

    log4j2 jdbc appender 实现将日志保存到 mysql。

    log4j2 jdbc appender 实现将日志保存到 mysql。

    log4j根据日期和文件大小切分日志

    由公司的项目需要根据日期和文件大小切分log4j日志,所以实现来该appender。本人测试通过,并且在公司的其它项目中已有线上使用,暂时还没发现问题。本人代码有写得不好或者错误的地方,欢迎大家指正,谢谢!!!

    java代码实例-日志规范史上最全java日志攻略(附教程)

    Log4J "Log4J的入门使用 Log4j的配置 输出日志文件 将日志信息存入数据库" Apache JCL "common log介绍 log中的接口" SLF4J "日志门面的使用 日志的绑定 日志的桥接 日志门面的原理" log-back "log-back的日志框架 ...

    log4j 使用说明 很信息

    Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式...

    SSM+redis+log4j+swagger

    一份纯净的idea用的maven搭建SSM框架,里面包括redis,日志,Swagger。

    基于Java日志平台的访问链路追踪实战(1.01G)

    01-日志专题-java日志体系基础 ...---16-log4j的appender及pattern格式.mp4 ---17-logback配置及官方文档使用.mp4 ---18-logback配置自动刷新.mp4 ---19-jcl配置及实现类优先级.mp4 ---20-commons-logging配置

    基于Java日志平台的访问链路追踪实战(1.34G)

    01-日志专题-java日志体系基础 ...---16-log4j的appender及pattern格式.mp4 ---17-logback配置及官方文档使用.mp4 ---18-logback配置自动刷新.mp4 ---19-jcl配置及实现类优先级.mp4 ---20-commons-logging配置

    log4cplus 源码(C++编写的开源的日志系统)

    log4cplus是C++编写的开源的日志系统,前身是java编写的log4j系统.受Apache Software License保护。作者是Tad E. Smith。log4cplus具有线程安全、灵活、以及多粒度控制的特点,通过将信息划分优先级使其可以面向程序...

    Log4j入门和实例

    我的blog http://blog.csdn.net/facepp/archive/2008/04/17/2299857.aspx&lt;br&gt;Log4J简介 1 主要由三大组件构成: Logger:决定什么日志信息应该被输出,什么日志信息应该被忽略 eg. logrj.logger....

    azkaban-3.38安装包(已编译)

    log4j.appender.server.layout=org.apache.log4j.PatternLayout log4j.appender.server.File=logs/azkaban-execserver.log log4j.appender.server.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss.SSS Z} %p [%...

    应用分析监控平台 闪电狗.zip

    log4j配置:log4j.appender.MongoDB.layout.ConversionPattern={"timestamp":"%d","level":"%p","className":"%c","message":"%m","pid":"%V","ip":"%I",uuid:"%X{UUID}"} 如何监控tomcat访问日志 1.先配置将...

Global site tag (gtag.js) - Google Analytics