某系统日志架构是在项目中通过配置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日志丢失问题相关推荐

  1. python修改html内容_详解Python利用Beautiful Soup模块修改内容示例代码

    Beautiful Soup是一个可以从HTML或XML文件中提取数据的Python 库.它能够通过你喜欢的转换器实现惯用的文档导航.查找.修改文档的方式.他还能够修改HTML/XML文档的内容.这篇 ...

  2. log4日志内容换行_springboot支付项目之日志配置

    日志框架 本节主要内容: 1:常见的几种日志框架 2:Logback的使用 3:怎么配置info和error级别日志到不同文件中并且按照日期每天一个文件. 以上几个框架可以分类如下: SLF4J和Lo ...

  3. 安装程序未能打开日志文件_工地开工,安全日志记录这样写才规范!

    一.安全日志的理解 施工安全日志是从工程开始到竣工,由专职安全员对整个施工过程中的重要生产和技术活动的连续不断的详实记录.是项目每天安全施工的真实写照,也是工程施工安全事故原因分析的依据,施工安全日记 ...

  4. mysql 数据日志分析_基于mysql数据库的日志分析系统

    现如今,日志已经成为了我们分析系统及相关服务的一个重要工具.而日志也具有其相对较为固定的格式以便于进行统计查询.其大致格式如下: 日期时间            主机            进程[pi ...

  5. mysql 二进制日志查看_使用mysqlbinlog从二进制日志文件中查询mysql执行过的sql语句 (原)...

    前提 MySQL开启了binlog日志 操作 1. 查看MySQL是否开启binlog(进mysql操作) mysql> show variables like 'log_bin%'; 2. 查 ...

  6. mysql启动日志指令_简单整理MySQL的日志操作命令

    1.首先确认你日志是否启用了 ?1MySQL>show variables like'log_bin'; 如果启用了,即ON那日志文件就在MySQL的安装目录的data目录下 2.怎样知道当前的 ...

  7. 交换机日志删除_如何查看交换机报警日志 并导出日志 命令是什么

    在完成上述配置后,在任意视图下执行display命令可以显示配置后信息中心的运行情况,通过查看显示信息验证配置的效果. 在用户视图下执行resetlogbuffer命令可以将日志缓冲区的统计信息清除. ...

  8. logback修改日志内容_巧用maven profile动态修改logback日志目录

    在使用logback时,每次部署的时候,都需要手动修改logback-spring.xml,把日志目录调整到对应线上的,部署完之后,再调整到本地的目录.感觉这样太笨拙了,本着提高生产力的思想,耗时两个 ...

  9. mysql修改binlog 位置_查看mysql 的binlog日志存放的位置(转)

    首先查看配置文件中是否启用Binlog日志 [Linux ~]#vim /etc/my.cnf my.cnf内容: log-bin = mysqlbin #默认配置 一般放在/var/lib/mysq ...

最新文章

  1. 一起谈.NET技术,ASP.NET Eval如何进行数据绑定
  2. python3 基本数据类型
  3. 【Java 并发编程】线程池机制 ( 线程池阻塞队列 | 线程池拒绝策略 | 使用 ThreadPoolExecutor 自定义线程池参数 )
  4. ASPxGridView EditFormLayout修改 TextBox文本长度
  5. 深入对比数据科学工具箱:Python和R的异常处理机制
  6. WeakHashMap和Java引用类型详细解析
  7. [HNOI2012]集合选数(思维构造 + 状压dp)
  8. LVM (Logic Volume Management,逻辑卷管理)
  9. linux+系统优化基础,linux系统优化基础
  10. 150家通用经销商决定退出凯迪拉克品牌 因不愿投资于销售电动车
  11. 多行省略号不显示的问题
  12. 全球计算机一起炼丹是怎样的体验?
  13. Adobe Acrobat XI Pro 11安装教程
  14. RS232转PROFINET网关链接扫码枪与西门子PLC1200的配置方法
  15. 常用的功率半导体器件汇总
  16. 新员工月度计划制定心得
  17. 洛谷P4568 飞行路线
  18. pyodbc-操作SQLserver
  19. rk3399 android 9.0 skype强制切换到前置摄像头
  20. Node.js 第一天

热门文章

  1. YOLOv3: 训练自己的数据(绝对经典版本1)
  2. es6的Proxy(代理)
  3. 交换机生成树协议配置
  4. php无法加载Memcache缓存模块问题及Memcache的安装
  5. 【干货】JMeter BeanShell 应用
  6. Oracle闪回技术(笔记)
  7. 怎样定义网页里的关键字关键词
  8. Hadoop多次format格式化会导致节点的clusterID不一致
  9. 归并排序及C语言实现
  10. 【数据平台】Centos下仅CPU安装TensorFlow