是否有任何log4j或slf4j Appender框架提供额外的appender

时间:2011-08-17 03:21:48

标签: java log4j slf4j

虽然核心log4j和slf4j库带有很多好东西,我可以构建自己的东西,但我想知道是否有任何库附带有趣的appender。

大多数appender似乎是提供某些特定服务连接的桥梁,例如通过电子邮件发送消息或更新NT事件日志。我想的是更加抽象而不是中间件的记录器,但对于实时系统的观察者同样有用。

我觉得可能有用的疯狂想法

记录通常很有用,但由于相关请求成功完成,因此消息的剪切量确实不大,这可能会很麻烦。我有过的一个想法是,仅用于仅记录来自http请求的消息,这些消息在处理过程中会引发一些异常。如果请求没有失败,则不会将任何内容添加到日志中。当然,这种追加者需要一些东西来帮助控制它。

BufferControl {
   FLUSH_NOW, // flush everything now in the buffer
   FLLUSH, // flush everything when BufferingLogger.commit() is called.
   CLEAR, // clear everything before
   CLEAR_ALL; /// all past and future messages are ignored
   IGNORE_AFTER; // ignore messages after this event.
   IGNORE_BEFORE, // ignore messages before
   CONTINUE, // just continue...
   etc etc..
}

// implements could tell the bufferingappender to log messages because some exception was thrown etc.    
LoggingEventWatcher {
   BufferControl look(LoggingEvent, BufferingAppender);
}

// every logging event is passed to the logging event watcher which 
BufferingAppender {
   start();
   reset(); // throw away everything in the buffer
   commit(); // use returned BufferControl to flush or reset etc.
   flush(); // unconditionally flush all messages now.
}

想象一下,只有在记录了某个异常时才能记录所有消息。需要一个控制器来标记日志记录事务的开始,以及是否根据某些条件清除或刷新。

当然,有些聪明人需要重置缓冲区等等。

1 个答案:

答案 0 :(得分:4)

Logback是slf4j实现,提供了许多可配置的appender。 http://logback.qos.ch/

它提供基于上下文的日志记录,事件和对日志事件的广泛过滤。 您可以轻松地使用自己的扩展基本过滤器来满足您的需求。

详细信息: http://logback.qos.ch/manual/filters.html