Logstash TCP输入一旦出现,就会检索所有过去的日志

Logstash TCP输入一旦出现,就会检索所有过去的日志,tcp,logstash,logstash-logback-encoder,Tcp,Logstash,Logstash Logback Encoder,应用程序回写配置- <appender name="stash" class="net.logstash.logback.appender.LogstashAccessTcpSocketAppender"> <destination>localhost:5001</destination> <!-- encoder is required --> <encoder> <patter

应用程序回写配置-

<appender name="stash"
    class="net.logstash.logback.appender.LogstashAccessTcpSocketAppender">
    <destination>localhost:5001</destination>

    <!-- encoder is required -->
    <encoder>
        <pattern>%d{dd/MM/YY HH:mm:ss.SSS} - %-5level[%-5thread] -  %logger{32} - %msg%n</pattern>
    </encoder>
</appender>

本地主机:5001
%d{dd/MM/YY HH:MM:ss.SSS}-%-5level[%-5thread]-%logger{32}-%msg%n
Logstash输入是TCP插件,输出是ElasticSearch。 最初,Logstash服务器关闭,应用程序持续生成日志。在Kibana中查看时,不会添加新日志。一段时间后,开始进行日志存储。现在,当在Kibana中查看日志时,似乎所有在logstash关闭时生成的日志都被刷新到ES并可以查看

我已经检查了
ss | grep 5001
当logstash服务器关闭时,端口5001处于关闭等待状态,队列为空


原因是什么?

appender
net.logstash.logback.appender.logstashaccesstcpsocketapender
扩展了[
net.logstash.logback.appender.abstractLogstashtcpsocketapender
](master/src/main/java/net/logstash/logback/appender/abstractLogstashtcpsocketapender.java)它有一个内部环形缓冲区,用于缓冲日志事件。缓冲是实现非阻塞行为所必需的。否则,在将事件写入TCP套接字时,appender将阻止您的代码


默认情况下,环形缓冲区包含8192个字节。如果在将事件发送到套接字之前缓冲区已满,则appender将开始删除事件。可以通过appender接口配置缓冲区大小和许多其他属性。

可能发送数据的任何东西都有自己的缓冲区?