当前位置: 首页 > 知识库问答 >
问题:

Log4j2异步记录器默认缓冲区大小

申高卓
2023-03-14

我对在log4j2中使用异步记录器时的默认缓冲区大小有一个问题。log4j2的版本是2.11.2,由Spring引导log4j2starter 2.1.13引入。释放

看起来留档中的不同地方指的是不同的值。异步记录器文档将大小称为256*1024。然而,log4j2常规配置文档提到,当以无垃圾模式运行时,大小为4*1024,但256*1024则不然。log4j2及以上版本默认以无垃圾模式运行。

但是,当我启动应用程序时,将StatusLogger设置为TRACE,缓冲区大小显示为262144 (256 * 1024)。

DEBUG StatusLogger Creating custom DiscardingAsyncQueueFullPolicy(discardThreshold:INFO)
DEBUG StatusLogger [AsyncContext@685f4c2e] Starting AsyncLogger disruptor for this context with ringbufferSize=262144, waitStrategy=TimeoutBlockingWaitStrategy, exceptionHandler=org.apache.logging.log4j.core.async.AsyncLoggerDefaultExceptionHandler@7a4f0f29...

我会假设尺寸是4096。有没有其他人看到过这种行为,或者我在这里遗漏了什么?

多谢各位
-Anoop

共有1个答案

闻人锦
2023-03-14

当Log4j在web应用程序(javax.servlet.servlet在类路径上)或log4j2中运行时。enableThreadLocals系统属性为false缓冲区大小将为4*1024。否则为256*1024。

 类似资料:
  • 问题内容: 根据文档,使用默认缓冲区大小,而第二个构造函数允许设置缓冲区大小。 public BufferedReader(Reader in) 创建使用默认大小的输入缓冲区的缓冲字符输入流。 但是,文档没有提到默认的缓冲区大小是多少。 BufferedReader的默认缓冲区大小是多少? 问题答案: 默认缓冲区大小为8192个字符 http://developer.android.com/ref

  • 根据文档,使用默认缓冲区大小,而第二个构造函数,允许设置缓冲区大小。 公共缓冲区读取器(读取器输入) 创建使用默认大小的输入缓冲区的缓冲字符输入流。 但是,文档没有提到默认缓冲区大小。 BufferedReader的默认缓冲区大小是多少?

  • 问题内容: 该文件规定,对于缓冲的默认值是: 。我目前在Red Hat Linux 6上,但是我无法弄清楚为系统设置的默认缓冲。 谁能指导我如何确定系统的缓冲? 问题答案: 由于您链接到2.7文档,因此我假设您使用的是2.7。(在Python 3.x中,这一切都变得更加简单,因为在Python级别上公开了更多的缓冲。) 所有实际上做(在POSIX系统)是调用,然后,如果你已经通过了什么,。由于您没

  • 我最近升级了我的应用程序以使用log4j2。我正在尝试利用它的异步记录器特性。然而,看起来它并没有创建一个。根据Log4j异步配置,它说, 要使所有记录器都是异步的,请将中断器jar添加到类路径中,并将系统属性Log4jContextSelector设置为org.apache.logging.log4j.core.async.AsyncloggerContextSelector。我还设置了log4

  • 我正在尝试设置log4j2以使用异步记录器将所有消息记录到滚动文件中。 是否有一种方法可以创建另一个记录程序来捕获所有事件?还有别的想法吗? 下面是我的log4j2.xml:

  • 背景: 在log4j2中,当使用asyncappender时,您可以将记录器的参数“blocking”设置为false,以便丢弃溢出缓冲区大小的任何日志,而不会减慢主线程的速度。(请参见asyncAppender下的此处。)https://logging.apache.org/log4j/2.x/manual/appenders.html) 我正在将我们的应用程序升级到这里找到的辉煌的asyncL