【问题标题】:Are there any log4j or slf4j Appender frameworks that provide additional appenders是否有任何提供额外附加程序的 log4j 或 slf4j Appender 框架
【发布时间】:2011-08-17 03:21:47
【问题描述】:

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

大多数附加程序似乎是提供与特定服务(例如电子邮件消息或更新 NT 事件日志)的某些连接的桥梁。我正在考虑更抽象的记录器,而不是中间件,但对实时系统的观察者同样有用。

一个我认为可能有用的附加程序的疯狂想法

日志记录通常很有用,但由于相关请求成功完成而真正不必要的消息量过大,因此可能会很痛苦。我的一个想法是,仅记录来自在处理过程中抛出一些异常的 http 请求的消息是没有用的。如果请求没有失败,则不会将任何内容添加到日志中。自然,这种 appender 需要一些东西来帮助控制它。

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.
}

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

当然需要一些技巧来重置缓冲区等等。

【问题讨论】:

  • 你在说什么样的appender?此外 slf4j 是不同日志框架之间的接口,如 commons-logging、log4j 等。
  • 我真的不明白您想要什么:如果您按照您描述的那样编写一些智能逻辑,那么为什么要限制自己使用一个(或两个)Java 日志框架?此类功能应该存在于某些日志记录后端(NT 事件日志、日志的数据库存储等)中,并且应用程序应该只将它们的日志数据推送到那里。
  • @js 我不在乎哪个 f/w 为我提供了附加程序,因为它很可能使用 slf4j 作为两者之间的桥梁。然而,我在追求更性感的附加器。

标签: java log4j slf4j


【解决方案1】:

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

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

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

【讨论】:

  • 过滤器不支持对话,它们仅适用于单个消息/事件。
  • 但我认为实现这一点相当容易。只需扩展现有的 appender 使其缓冲输出,然后写入或清除它。投入可以与请求相关的上下文感知 (logback.qos.ch/manual/loggingSeparation.html)...
  • @JW,我知道我可以自己写所有东西,但这会破坏请求 foss 库的好处。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-22
  • 1970-01-01
  • 2010-10-09
  • 1970-01-01
  • 2013-09-21
  • 2022-01-08
  • 1970-01-01
相关资源
最近更新 更多