日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

logback修改日志内容_记一次Logstash日志丢失问题

發布時間:2025/4/16 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 logback修改日志内容_记一次Logstash日志丢失问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

某系統日志架構是在項目中通過配置logback.xml配置雙寫

  • 寫本地日志文件

  • 寫到遠程logstash

本地沒有問題,有問題是logstash,在Kibana上看到有些日志沒顯示。

開始是懷疑是不是日志丟了,由于使用的是LogstashTcpSocketAppender

查了下官文文檔:

Internally, the TCP appenders are asynchronous (using the LMAX Disruptor RingBuffer).All the encoding and TCP communication is delegated to a single writer thread.There is no need to wrap the TCP appenders with another asynchronous appender (such as AsyncAppender or LoggingEventAsyncDisruptorAppender).

The TCP appenders will never block the logging thread. If the RingBuffer is full (e.g. due to slow network, etc), then events will be dropped.

我得到了以下信息:

  • LogstashTcpSocketAppender和 logback的的異步appender的行為是類似的,也就是說,它也是異步的。

  • 使用LogstashTcpSocketAppender ,不需要再外面再包裹任何Logback的appender

  • RingBuffer滿了,日志會丟失

關于最后一點,只需修改配置就可以。根據源碼看默認是8192 單位是B。且是2的冪次方。

"stash" <ringBufferSize>1048576ringBufferSize>

然而這并沒有解決問題,于是仔細看了下logstash的日志,發現有大量的json解析錯誤,根據日志情況分析,原因是日志數據傳輸到logstash之后被截斷成了多條數據,于是有的數據就解析異常了,自然無法正常到歸集到es的索引文檔中。

知道原因后解決起來就有思路了,查了一下logstash的配置:

tcp { port => 5001 type => applogs codec => json }

原因就是codec寫的是json的問題,應該用json_lines。

對于日志很長的json,應該使用json_lines格式,否則會被截斷成多條且解析錯誤。

tcp { port => 5001 type => applogs codec => json_lines }

關注公眾號?獲取更多精彩內容

總結

以上是生活随笔為你收集整理的logback修改日志内容_记一次Logstash日志丢失问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。