java的错误日志通常有多行表示为一次完成的错误日志。收集的时候需要将其合并为一条。否则每行都会做为一条日志发送。
(logstash也是如此)
如:
13:20:05.491 [http-nio-8080-exec-10] ERROR com.xxx.modules.mall.controller.ApiMallGoodsController - 【商品详情】报错: java.lang.NullPointerException: null at com.xxx.modules.mall.goods.service.MallGoodsService.apiMallGoodsInfo(MallGoodsService.java:279) ... 略
官方关于多行匹配参数:https://www.elastic.co/guide/en/beats/filebeat/current/multiline-examples.html
# 配置参数
[root@node3 filebeat]# cat filebeat-java.yml filebeat.inputs: - type: log paths: - /home/dockermount/api/api*/logs/*-error.log fields: java: true fields_under_root: true multiline.pattern: '^[0-9]{2}:[0-9]{2}:[0-9]{2}.* \[http-nio' multiline.negate: true multiline.match: after output.redis: hosts: ["172.19.34.91:50000"] password: "******" key: "filebeat-java" db: 8 timeout: 10
multiline.pattern 是匹配一条完整日志开头的正则,如 13:20:05.491 [http-nio 开头 multiline.negate 可配置为true或false,如果为true,则代表 不匹配的行 multiline.match 可配置为before或after,对不匹配的行做什么动作。如果为after,则代表不匹配的行附加到之前匹配行的下面
原创文章,转载请注明。本文链接地址: https://www.rootop.org/pages/4740.html