log4net 消息何时从缓冲区刷新到目的地?

When are log4net messages flushed from the buffer to the destination?

我正在使用 default ADONetAppender。缓冲区大小值设置为 100。据我了解,消息将保留在内存中直到有 100。然后它们将被刷新到目的地。这是我的问题。

1.What 如果一整天只有十条消息被放入缓冲区。他们会被冲到目的地吗? 2. 如果我从 Web 应用程序登录,当缓冲区中有 50 条消息并且应用程序池回收或 Web 应用程序重新发布时会发生什么情况?那 50 条消息会永远丢失吗? 3. 将缓冲区大小设置为 1 是否效率低下?我们在测试时总是将其设置为 1,以便尽快查看日志。

提前致谢。

  1. 否,直到达到缓冲区计数或应用程序结束。

  2. 当应用程序域被拆除时,缓冲区被刷新到数据库

  3. 这只是意味着每个日志事件有一个数据库连接,这可能是一个很高的开销(并阻塞调用线程)。如果您查看 this answer,这里有一个 ADONetAppender 子类的示例,它将在指定时间后将缓冲区刷新到数据库。