本文多参考自:
http://www.360doc.com/content/05/0803/23/73_4468.shtml
log4j 环境包括三个主要组件:
logger(日志记录器):控制要启用或禁用哪些日志记录语句。可以对日志记录器指定如下级别: ALL 、DEBUG 、 INFO 、 WARN 、 ERROR , FATA或 OFF 。
layout(布局):根据用户的愿望格式化日志记录请求。
appender:向目的地发送格式化的输出。
理解 appender
log4j 框架允许向任何日志记录器附加多个 appender。可以在任何时候对某个日子记录器添加(或删除)appender。附随 log4j 分发的 appender 有多个,包括:
ConsoleAppender
FileAppender
SMTPAppender
JDBCAppender
JMSAppender
NTEventLogAppender
SyslogAppender
...
也可以创建自己的自定义 appender。
所有的 appender 都必须扩展 org.apache.log4j.AppenderSkeleton 类,这是一个抽象类,它实现了 org.apache.log4j.Appender 和 org.apache.log4j.spi.OptionHandler 接口。
所以创建自己的自定义 appender有两种方式:
1.继承已有的那几个已有的appender,或者继承这几个类的父类(比如:WriterAppender),这样可以使用已有的一些功能,只需要修改自己所要的功能。
2.直接继承AppenderSkeleton 类,所以一切自定义。
编写自定义 appender 的诀窍
1.扩展 AppenderSkeleton 抽象类。
2.指定您的 appender 是否需要 layout。
3.如果某些属性必须同时激活,则应该在 activateOptions() 方法内完成。
4.实现 close() 方法。它必须把 closed 字段的值设置为 true 。记得释放所有资源。
5.可选地指定要使用的默认 ErrorHandler 对象。
6.编写 append() 方法的代码。这个方法负责附加日志记录事件,并在错误发生时负责调用错误处理程序。
详细说明请参考文章开头的博闻,下面给出一个简单的示例:
public class MyAppender extends AppenderSkeleton{
@Override
public void append(LoggingEvent event) {
if("DEBUG".equals(event.getLevel().toString())){
System.out.println("1111");
return;
}
System.out.println(this.getLayout().format(event));
System.out.println("LEVEL="+event.getLevel());
System.out.println("message="+event.getMessage());
}
@Override
public void close() {
// TODO Auto-generated method stub
}
@Override
public boolean requiresLayout() {
// TODO Auto-generated method stub
return true;
}
}
PS:如果想获得log4j.properties中的自定义属性,只要在MyAppender 中定义相同属性,给出set/get方法。
其他组件也可以扩展,比如LEVEL,FILTER,具体怎么扩展,大致是参考原来的组件实现哪个接口,或者继承哪个类,一般继承一个类比较好,省去一些代码。
log4j 2已经出来了,期待他的表现,应该功能更强大,扩展更方便。所以1版本暂时不研究
分享到:
相关推荐
log4j-snmp-appender.jar, log4j-taglib-2.0.2-javadoc.jar, log4j-taglib-2.0.2-sources.jar, log4j-taglib-2.0.2.jar, log4j-to-slf4j-2.0.2-javadoc.jar, log4j-to-slf4j-2.0.2-sources.jar, log4j-to-slf4j-...
标签:activemq-log4j-appender-5.10.0-sources.jar,activemq,log4j,appender,5.10.0,sources,jar包下载,依赖包
标签:activemq-log4j-appender-5.10.0-javadoc.jar,activemq,log4j,appender,5.10.0,javadoc,jar包下载,依赖包
Log4j Appender 阿里云Log Log4j Appender Apache log4j是一个Apache软件基础项目。 您可以通过Log4j控制日志的目的地。 它可以是控制台,文件,GUI组件,套接字,NT事件日志,系统日志。 您也可以控制每个日志的...
<groupId>org.apache.kafka <artifactId>kafka-log4j-appender <version>0.10.2.0 </dependency>
标签:activemq-log4j-appender-5.8.0.jar,activemq,log4j,appender,5.8.0,jar包下载,依赖包
标签:activemq-log4j-appender-5.9.0.jar,activemq,log4j,appender,5.9.0,jar包下载,依赖包
标签:activemq-log4j-appender-5.9.1-javadoc.jar,activemq,log4j,appender,5.9.1,javadoc,jar包下载,依赖包
标签:activemq-log4j-appender-5.8.0-sources.jar,activemq,log4j,appender,5.8.0,sources,jar包下载,依赖包
标签:activemq-log4j-appender-5.10.0.jar,activemq,log4j,appender,5.10.0,jar包下载,依赖包
标签:activemq-log4j-appender-5.9.0-javadoc.jar,activemq,log4j,appender,5.9.0,javadoc,jar包下载,依赖包
标签:activemq-log4j-appender-5.9.0-sources.jar,activemq,log4j,appender,5.9.0,sources,jar包下载,依赖包
标签:activemq-log4j-appender-5.9.1-sources.jar,activemq,log4j,appender,5.9.1,sources,jar包下载,依赖包
标签:activemq-log4j-appender-5.8.0-javadoc.jar,activemq,log4j,appender,5.8.0,javadoc,jar包下载,依赖包
uumd-log4j-appender-redis 用于将日志消息推送到 Redis 列表的 Log4j 附加程序。 派生自 log4j-redis-appender( ) 配置 此 appender 将日志消息推送到 Redis 列表。 这是一个示例配置: log4j.rootLogger=info,...
log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000 # 发送日志给邮件 log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender log4j.appender....
log4jappender配置kafka使用的jar包 log4jappender配置kafka使用的jar包 log4jappender配置kafka使用的jar包
阿里云java源码Log4j2 附加程序 阿里云日志 Log4j2 Appender Apache Log4j2 是对 Log4j 的升级,与其前身 Log4j 1.x 相比提供了重大改进。 可以通过Log4j2控制日志的目的地。 它可以是控制台、文件、GUI 组件、套接...
log4j2-kafka-appender 用于log4j2的Kafka附加程序。 此附加程序使用新的java kafka生产者api以获得更好的性能和吞吐量。 ## Build ./gradlew jar //生成jar ##行家< dependency> < groupId>...
o LOG4J2-134: Use %red, %white, %blue, and so on in the console appender. o LOG4J2-133: Allow custom message creation via a message factory. o Added Flume Appender samples. 还包括诸多 bug 修复,...