在上一篇文章里,我们故意遗漏了一个重要的接口,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
分享到:
相关推荐
Log4j Appender 阿里云Log Log4j Appender Apache log4j是一个Apache软件基础项目。 您可以通过Log4j控制日志的目的地。 它可以是控制台,文件,GUI组件,套接字,NT事件日志,系统日志。 您也可以控制每个日志的...
阿里云java源码Log4j2 附加程序 阿里云日志 Log4j2 Appender Apache Log4j2 是对 Log4j 的升级,与其前身 Log4j 1.x 相比提供了重大改进。 可以通过Log4j2控制日志的目的地。 它可以是控制台、文件、GUI 组件、套接...
log4j2-elasticsearch概述 这是log4j2附加程序插件的父项目,能够将日志批量推送到Elasticsearch集群。 最新发布的代码(1.5.x)可用。 项目包括: log4j2-elasticsearch-core实现的框架提供程序 log4j2-elastic...
关于配置文件的名称以及在项目中的存放位置 log4j 2.x版本不再支持像1.x中的....如果本地要测试,可以把log4j2-test.xml放到classpath,而正式环境使用log4j2.xml,则在打包部署的时候不要打包log4j2-test.xml即可。
Logback旨在作为流行的log4j项目的后继者。 您可以通过logback控制日志的目的地。 它可以是控制台,文件,GUI组件,套接字,NT事件日志,系统日志。 您也可以控制每个日志的输出格式。 您可以通过日志级别控制...
log4j-2-弹性 我创建了这个项目,以共享和增强附加程序,该附加程序将消息直接记录到集群中。 在某些特定情况下,这种将日志聚合到Elasticsearch中的方法可以很好地替代Elastic Beats。特征该产品包括一些标准和某些...
Log4j 学习笔记. 1. Log4j的类图 2. Logger:日志写出器 1. Logger的输出方法 2. Logger的命名规则 3. Log level 4. 示例代码 5. 关于logger的两点说明 3. Appender:日志目的地 1. ConsoleAppender 2. ...
由公司的项目需要根据日期和文件大小切分log4j日志,所以实现来该appender。本人测试通过,并且在公司的其它项目中已有线上使用,暂时还没发现问题。本人代码有写得不好或者错误的地方,欢迎大家指正,谢谢!!!
log4j-aws-appenders , 和Appender写入了各种AWS目标: :AWS本地集中式日志管理,提供关键字和时间范围搜索。 :这是向和其他分析目标提供数据的第一步。 :用于实时错误通知。 除了基本的日志输出外,该库还...
log4j2 jdbc appender 实现将日志保存到 mysql。
由公司的项目需要根据日期和文件大小切分log4j日志,所以实现来该appender。本人测试通过,并且在公司的其它项目中已有线上使用,暂时还没发现问题。本人代码有写得不好或者错误的地方,欢迎大家指正,谢谢!!!
Log4J "Log4J的入门使用 Log4j的配置 输出日志文件 将日志信息存入数据库" Apache JCL "common log介绍 log中的接口" SLF4J "日志门面的使用 日志的绑定 日志的桥接 日志门面的原理" log-back "log-back的日志框架 ...
Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式...
一份纯净的idea用的maven搭建SSM框架,里面包括redis,日志,Swagger。
01-日志专题-java日志体系基础 ...---16-log4j的appender及pattern格式.mp4 ---17-logback配置及官方文档使用.mp4 ---18-logback配置自动刷新.mp4 ---19-jcl配置及实现类优先级.mp4 ---20-commons-logging配置
01-日志专题-java日志体系基础 ...---16-log4j的appender及pattern格式.mp4 ---17-logback配置及官方文档使用.mp4 ---18-logback配置自动刷新.mp4 ---19-jcl配置及实现类优先级.mp4 ---20-commons-logging配置
log4cplus是C++编写的开源的日志系统,前身是java编写的log4j系统.受Apache Software License保护。作者是Tad E. Smith。log4cplus具有线程安全、灵活、以及多粒度控制的特点,通过将信息划分优先级使其可以面向程序...
我的blog http://blog.csdn.net/facepp/archive/2008/04/17/2299857.aspx<br>Log4J简介 1 主要由三大组件构成: Logger:决定什么日志信息应该被输出,什么日志信息应该被忽略 eg. logrj.logger....
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 [%...
log4j配置:log4j.appender.MongoDB.layout.ConversionPattern={"timestamp":"%d","level":"%p","className":"%c","message":"%m","pid":"%V","ip":"%I",uuid:"%X{UUID}"} 如何监控tomcat访问日志 1.先配置将...