【发布时间】:2011-08-18 00:25:53
【问题描述】:
我想了解更多关于 AsyncAppender 的细节
莱克
如果附加的 appender 不起作用,我们可以控制重试吗?
如果附加的appender遇到错误,它如何处理错误
N 如何从异步 appender 中删除附加的 appender....
【问题讨论】:
标签: multithreading asynchronous log4j jms
我想了解更多关于 AsyncAppender 的细节
莱克
如果附加的 appender 不起作用,我们可以控制重试吗?
如果附加的appender遇到错误,它如何处理错误
N 如何从异步 appender 中删除附加的 appender....
【问题讨论】:
标签: multithreading asynchronous log4j jms
如您所知,AsyncAppender 只是其他附加程序的包装器。创建 AsyncAppender 时,您已将“真实”附加程序附加到它。
AsyncAppender 将缓冲您的日志消息,直到达到您配置的限制,然后将这些日志消息一次性发布到附加的附加程序。
从 AsyncAppender 的代码来看,看起来当缓冲区已满时,它只是为每个附加的 appender 调用 doAppend 方法(简单的 for 循环遍历所有 appender)。由附加的附加程序来处理错误情况和重试。
我建议通过扩展 SkeletonAppender 并在您覆盖的方法中自己处理所有内容来实现自定义附加程序。
为了回答你的最后一个问题,AsyncAppender 有一个 removeAppender 方法:
public void removeAppender(final Appender appender) {
【讨论】: