虽然核心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.
}
想象一下,只有在记录了某个异常时才能记录所有消息。需要一个控制器来标记日志记录事务的开始,以及是否根据某些条件清除或刷新。
当然,有些聪明人需要重置缓冲区等等。
答案 0 :(得分:4)
Logback是slf4j实现,提供了许多可配置的appender。 http://logback.qos.ch/
它提供基于上下文的日志记录,事件和对日志事件的广泛过滤。 您可以轻松地使用自己的扩展基本过滤器来满足您的需求。