2016-03-28 36 views
1

應用的logback配置 -Logstash TCP輸入檢索所有過去的記錄,一旦出現

<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> 

Logstash輸入TCP插件和輸出ElasticSearch。 最初,Logstash服務器關閉,應用程序不斷生成日誌。在Kibana中查看時,沒有新的日誌被添加。一段時間後,logstash啓動。現在,當在Kibana中查看日誌時,似乎logstash關閉時生成的所有日誌都被刷新到ES並且可以被查看。

當logstash服務器關閉時,我檢查了ss | grep 5001,端口5001處於CLOSED-WAIT狀態,隊列爲空。

這可能是什麼原因?

+1

也許無論發送數據是否有其自己的緩衝? –

回答

1

該附加器net.logstash.logback.appender.LogstashAccessTcpSocketAppender延伸[net.logstash.logback.appender.AbstractLogstashTcpSocketAppender](https://github.com/logstash/logstash-logback-encoder/blob/主/ SRC /主/爪哇/淨/ logstash /的logback /附加器/ AbstractLogstashTcpSocketAppender.java),其具有緩衝日誌事件的內部環形緩衝區。緩衝是實現非阻塞行爲所必需的。否則appender會在將事件寫入TCP套接字時阻塞您的代碼。

環形緩衝區默認保存8192個事件。如果在事件發送到套接字之前緩衝區已滿,appender將開始丟棄事件。緩衝區大小和許多其他屬性可以通過appender接口進行配置。