gpt4 book ai didi

java - LOG4j2 异步记录器阻塞功能

转载 作者:行者123 更新时间:2023-11-29 03:01:08 24 4
gpt4 key购买 nike

背景:

在 log4j2 中,当使用 asyncappender 时,您可以将记录器的参数“blocking”设置为 false,这样任何溢出缓冲区大小的日志都将被丢弃,并且不会减慢主线程。 (请参阅 asyncAppender https://logging.apache.org/log4j/2.x/manual/appenders.html 下的此处)

我正在将我们的应用程序升级到在此处找到的出色的 asyncLogger 结构:https://logging.apache.org/log4j/2.x/manual/async.html

虽然我看到我可以设置环形缓冲区大小,但我没有看到任何说明我可以阻止它阻塞应用程序主线程的信息,

问题:

所以只是为了确定我在这里问,因为我在文档中没有看到任何东西,如果一个日志进来的日志比出去的日志多(假设我们将它们存储在数据库中并且插入需要一段时间)所以使用 asyncloggers 时超出了 ringbuffersize 额外的日志会发生什么?主线程会以任何方式变慢吗?

谢谢!

最佳答案

使用异步记录器,如果您的附加程序跟不上应用程序的记录速度,环形缓冲区最终会填满。当环形缓冲区已满时,记录器将阻止尝试将日志事件添加到环形缓冲区,所以是的,应用程序线程将受到影响。

default ringbuffer size 的原因之一是如此之大,以至于它可以在不影响应用程序的情况下处理“突发”的日志事件。但是,选择适合(可以处理)应用程序持续日志记录率的附加程序很重要。 (以目标负载的 2 或 3 倍进行测试是个好主意。)

仅供引用,log4j 2 附带的最快的 appender 是 RandomAccessFileAppender (及其 Rolling variant )。

下一版本 (2.5.1) will have a feature允许用户在环形缓冲区已满 80% 或更多时删除事件(例如 DEBUG 和 TRACE 事件)。

关于java - LOG4j2 异步记录器阻塞功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34859839/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com