`
lastsoul
  • 浏览: 34892 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

log4j-自定义appender 来扩展 log4j 框架

    博客分类:
  • LOG
 
阅读更多
本文多参考自: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-api-2.17.1.jar和log4j-core-2.17.1.jar

    总的来说,log4j-api-2.17.1.jar和log4j-core-2.17.1.jar是Log4j2的核心组件,它们共同构建了一个强大且可扩展的日志框架。开发者应熟悉这两个库的职责和交互方式,以便充分利用Log4j2的功能,同时确保系统的安全性...

    log4j-api-2.12.4.ja和log4j-core-2.12.4.jar

    **log4j-api-2.12.4.jar** 是Log4j 2框架的API模块,它包含了日志记录的基本接口和类,如`Logger`, `Level`, `Appender`, `Layout`等。这些接口和类为应用程序提供了一种与具体实现解耦的方式来进行日志记录。开发者...

    log4j-API-最新稳定版本log4j-1.2.17

    10. **可扩展性**:Log4j API允许开发者通过插件机制轻松添加新的appender、filter和layout。 总的来说,Log4j API为Java开发者提供了一个强大而灵活的日志解决方案,通过其丰富的功能和可定制性,能够适应各种项目...

    apache-log4j-2.8.2-bin.tar

    3. **Layouts与Patterns**:Log4j 允许自定义日志输出格式,如使用PatternLayout来定制输出模式,这使得日志更容易阅读和分析。在2.8.2版本中,可能会有新的布局模式或者对已有模式的增强。 4. **Appenders**:...

    logging-log4j2-log4j-2.15.0-rc2.zip

    Log4j,作为Java领域广泛使用的日志记录框架,一直以来都是开发者们的重要工具。这次我们关注的是其最新版本——logging-log4j2-log4j-2.15.0-rc2。这个版本在安全性和性能上都做了进一步的优化和提升,旨在为开发者...

    apache-log4j-2.17.0-bin.tar.gz

    总的来说,Apache Log4j是一个强大且灵活的日志框架,对于开发人员来说,理解和熟练使用它可以提高应用程序的可维护性和安全性。定期更新到最新版本,尤其是当有安全更新时,是保持系统安全的关键。

    log4net自定义Appender

    提供的`log4netTest`项目可能包含了一个简单的示例,演示了如何在实际应用中配置和使用自定义Appender。通过查看和运行这个项目,你可以更好地理解自定义Appender的工作机制和使用方式。 总结,Log4net的自定义...

    log4j-redis-appender-master.zip

    "log4j-redis-appender-master.zip"正是这样一款针对Log4j的扩展,它使得日志可以直接写入Redis,为logstash等日志收集工具提供高效的缓存中间件。 首先,我们要理解Log4j的基本概念。Log4j是一个开源的日志记录库...

    log4j-core-2.5

    3. **插件体系**:Log4j-core-2.5支持多种插件,如Layout、Filter、Appender等,开发者可以根据需求选择合适的插件来扩展其功能。 4. **事件处理**:Log4j-core-2.5采用事件模型,当一个日志事件发生时,会通过一...

    log4j-1.2.15-apidocs.rar

    Log4j提供了多种预定义的Appender,如ConsoleAppender、FileAppender等,也可以自定义Appender满足特定需求。 3. **Layout**:布局对象用于格式化日志事件。常见的布局有SimpleLayout、PatternLayout和HTMLLayout,...

    apache-log4j-2.9.1jar包及源码

    3. **可扩展性**:Log4j支持多种Appenders,如ConsoleAppender(控制台输出)、FileAppender(文件存储)、SMTPAppender(邮件通知)等,可以通过插件系统添加自定义Appender。 4. **性能优化**:Log4j 2引入了异步...

    apache-log4j-2.0-rc1.rar

    Apache Log4j 2.0 是一个广泛使用的Java日志框架,主要负责应用程序的调试、监控和日志记录。此压缩包"apache-log4j-2.0-rc1.rar"包含了Log4j 2.0的第一个候选版本,提供了一系列改进和新特性,旨在提高性能和可扩展...

    log4j-1.2.17

    通过阅读文档,开发者可以更好地理解和利用log4j的全部功能,如自定义Appender、过滤器、异步日志记录等。 五、进阶应用 1. **日志性能优化**:合理设置日志级别,避免过多的日志输出影响系统性能。 2. **日志分级...

    log4j-1.2.17含源码

    通过阅读这些源码,开发者可以了解Log4j如何处理日志事件,以及如何自定义自己的Appender和Layout。 此外,Log4j 1.2.17还支持MDC(Mapped Diagnostic Context)和NDC(Nested Diagnostic Context),这两个功能...

    log4j-1.2.9.jar

    尽管Log4j 1.x版本稳定且功能强大,但随着技术的发展,社区推荐使用更现代的Log4j 2.x版本,它在性能、可扩展性和API设计上都有显著提升。不过,对于仍在使用Log4j 1.2.9的项目,理解其工作原理和配置方式依然至关...

    log4j-1.2.17.jar

    Log4j作为Java领域广泛使用的日志框架,因其高效、灵活和可扩展性而备受推崇。本文将深入探讨Log4j 1.2.17版本的使用方法和核心概念。 **1. Log4j简介** Log4j是由Apache软件基金会开发的日志组件,提供了丰富的...

    apache-log4j-2.9.0-src.zip

    9. **自定义日志处理器**:Log4j提供了一套扩展机制,允许开发者编写自己的日志处理器、布局和查找器,源码中`Lookup`, `Layout`, `Filter`, `Appender`等接口和类可作为参考。 10. **MDC与NDC**:Mapped ...

    (转)如何自建appender扩展Log4j框架

    总结来说,扩展Log4j框架主要是通过自定义Appender实现的,这使得日志系统更加灵活,能够适应各种特定的业务需求。理解Appender的工作原理以及如何创建和配置它们,对于提升Java应用的日志管理能力至关重要。在实际...

    logging-log4j-1.2.13.zip

    Log4j支持插件机制,可以添加自定义Appender、Layout和Filter。此外,通过配置文件可以实现日志的动态调整,如改变日志级别、调整输出位置等。 总结,logging-log4j-1.2.13版的Log4j是一个强大而灵活的日志管理工具...

Global site tag (gtag.js) - Google Analytics