文档章节

ELK 记录 java log4j 类型日志

o
 osc_4nmshwhm
发布于 2018/08/07 09:39
字数 909
阅读 11
收藏 0

「深度学习福利」大神带你进阶工程师,立即查看>>>

ELK 记载  java log4j 时,一个报错会生成很多行,阅读起来很不方便。

类似这样

 

 

解决这个问题的方法

 

 

1.使用多行合并

合并多行数据(Multiline)

有些时候,应用程序调试日志会包含非常丰富的内容,为一个事件打印出很多行内容。这种日志通常都很难通过命令行解析的方式做分析。

而 logstash 正为此准备好了 codec/multiline 插件!

小贴士:multiline 插件也可以用于其他类似的堆栈式信息,比如 linux 的内核日志。

 

参考文章:logstash 安装插件multiline

配置文件

input {
  file {
    path => "/root/error.log"
    codec => multiline {
      pattern => "^\["
      negate => true
      what => "previous"
    }
    start_position => "beginning"
    sincedb_path => "/dev/null"
    ignore_older=>0
  }
}
output {
  elasticsearch { hosts => ["10.10.15.90:9200"] 
                  index => "testjava"
  }
  stdout { codec => rubydebug }
}

以上配置文件,将 不是以 " [ "  这个符号开头的行并入上一个事件中。 

 

测试文本error.log

[2018-06-05 17:23:57]ERROR com.alibaba.druid.pool.DruidAbstractDataSource(line:1134) -oracle.jdbc.driver.OracleDriver is deprecated.
[2018-06-05 17:23:57]ERROR com.alibaba.druid.pool.DruidAbstractDataSource(line:1134) -oracle.jdbc.driver.OracleDriver is deprecated.
[2018-06-05 17:23:59]ERROR com.alibaba.dubbo.container.Main(line:86) - [DUBBO] Error creating bean with name 'YSWPurchaseListService': Cannot resolve reference to bean 'ySWPurchaseListServiceImpl' while setting bean property 'ref'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'ySWPurchaseListServiceImpl' available, dubbo version: 2.5.3, current host: 127.0.0.1
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'YSWPurchaseListService': Cannot resolve reference to bean 'ySWPurchaseListServiceImpl' while setting bean property 'ref'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'ySWPurchaseListServiceImpl' available
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:378)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:110)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1613)
Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'ySWPurchaseListServiceImpl' available
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:367)
    ... 17 more
[2018-06-05 17:25:05]ERROR com.alibaba.druid.pool.DruidAbstractDataSource(line:1134) -oracle.jdbc.driver.OracleDriver is deprecated.
[2018-06-05 17:26:05]ERROR com.alibaba.druid.pool.DruidAbstractDataSource(line:1134) -oracle.jdbc.driver.OracleDriver is deprecated.hello world
[hello world
111111111111111hello world
[222222222hello world
[333333hello world

 

运行结果

{
    "@timestamp" => 2018-08-29T02:02:56.340Z,
       "message" => "[2018-06-05 17:23:57]ERROR com.alibaba.druid.pool.DruidAbstractDataSource(line:1134) -oracle.jdbc.driver.OracleDriver is deprecated.",
          "path" => "/root/error.log",
          "host" => "localhost.localdomain",
      "@version" => "1"
}
{
    "@timestamp" => 2018-08-29T02:02:56.264Z,
       "message" => "[2018-06-05 17:23:57]ERROR com.alibaba.druid.pool.DruidAbstractDataSource(line:1134) -oracle.jdbc.driver.OracleDriver is deprecated.",
          "path" => "/root/error.log",
          "host" => "localhost.localdomain",
      "@version" => "1"
}
{
          "tags" => [
        [0] "multiline"
    ],
          "host" => "localhost.localdomain",
      "@version" => "1",
    "@timestamp" => 2018-08-29T02:02:56.349Z,
       "message" => "[2018-06-05 17:23:59]ERROR com.alibaba.dubbo.container.Main(line:86) - [DUBBO] Error creating bean with name 
'YSWPurchaseListService': Cannot resolve reference to bean 'ySWPurchaseListServiceImpl' while setting bean property 'ref'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'ySWPurchaseListServiceImpl' available, dubbo version: 2.5.3, 
current host: 127.0.0.1\norg.springframework.beans.factory.BeanCreationException: Error creating bean with name 'YSWPurchaseListService': 
Cannot resolve reference to bean 'ySWPurchaseListServiceImpl' while setting bean property 'ref'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'ySWPurchaseListServiceImpl' 
available\n\tat org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:378)\n\tat 
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:110)\n\tat org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1613)\nCaused by: 
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'ySWPurchaseListServiceImpl' available\n\tat 
org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:367)\n\t... 17 more",
          "path" => "/root/error.log"
}
{
    "@timestamp" => 2018-08-29T02:02:56.353Z,
       "message" => "[2018-06-05 17:25:05]ERROR com.alibaba.druid.pool.DruidAbstractDataSource(line:1134) -oracle.jdbc.driver.OracleDriver is deprecated.",
          "path" => "/root/error.log",
          "host" => "localhost.localdomain",
      "@version" => "1"
}
{
    "@timestamp" => 2018-08-29T02:02:56.353Z,
       "message" => "[2018-06-05 17:26:05]ERROR com.alibaba.druid.pool.DruidAbstractDataSource(line:1134) -oracle.jdbc.driver.OracleDriver is deprecated.hello world",
          "path" => "/root/error.log",
          "host" => "localhost.localdomain",
      "@version" => "1"
}
{
          "tags" => [
        [0] "multiline"
    ],
          "host" => "localhost.localdomain",
      "@version" => "1",
    "@timestamp" => 2018-08-29T02:02:56.354Z,
       "message" => "[hello world\n111111111111111hello world",
          "path" => "/root/error.log"
}
{
    "@timestamp" => 2018-08-29T02:02:56.354Z,
       "message" => "[222222222hello world",
          "path" => "/root/error.log",
          "host" => "localhost.localdomain",
      "@version" => "1"
}
q^H^C[WARN ] 2018-08-29 10:13:19.902 [SIGINT handler] runner - SIGINT received. Shutting down.
{
    "@timestamp" => 2018-08-29T02:13:20.848Z,
       "message" => "[333333hello world",
          "path" => "/root/error.log",
          "host" => "localhost.localdomain",
      "@version" => "1"
}

测试结果:
测试文本中的语句,按照  "[" 这个符号,被分割成了 7 个事件(总共8个事件),最后一个事件没有显示是正常的

这是因为你最后输入的回车符 \n 并不匹配设定的 ^\[ 正则表达式,

logstash 还得等下一行数据直到匹配成功后才会输出这个事件。

 

解释

其实这个插件的原理很简单,就是把当前行的数据添加到前面一行后面,,直到新进的当前行匹配 ^\[ 正则为止。

这个正则还可以用 grok 表达式,稍后你就会学习这方面的内容。

 

 

2.使用插件input/log4j

logstash 还提供了另一种处理 log4j 的方式:input/log4j。
与 codec/multiline 不同,这个插件是直接调用了 org.apache.log4j.spi.LoggingEvent 处理 TCP 端口接收的数据。

 

o
粉丝 1
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
访问安全控制解决方案

本文是《轻量级 Java Web 框架架构设计》的系列博文。 今天想和大家简单的分享一下,在 Smart 中是如何做到访问安全控制的。也就是说,当没有登录或 Session 过期时所做的操作,会自动退回到...

黄勇
2013/11/03
3.5K
8
用vertx实现高吞吐量的站点计数器

工具:vertx,redis,mongodb,log4j 源代码地址:https://github.com/jianglibo/visitrank 先看架构图: 如果你不熟悉vertx,请先google一下。我这里将vertx当作一个容器,上面所有的圆圈要...

jianglibo
2014/04/03
4.2K
3
Flappy Bird(安卓版)逆向分析(一)

更改每过一关的增长分数 反编译的步骤就不介绍了,我们直接来看反编译得到的文件夹 方法1:在smali目录下,我们看到org/andengine/,可以知晓游戏是由andengine引擎开发的。打开/res/raw/at...

enimey
2014/03/04
6.1K
18
Nutch学习笔记4-Nutch 1.7 的 索引篇 ElasticSearch

上一篇讲解了爬取和分析的流程,很重要的收获就是: 解析过程中,会根据页面的ContentType获得一系列的注册解析器, 依次调用每个解析器,当其中一个解析成功后就返回,否则继续执行下一个解...

强子哥哥
2014/06/26
712
0
5分钟 maven3 快速入门指南

前提条件 你首先需要了解如何在电脑上安装软件。如果你不知道如何做到这一点,请询问你办公室,学校里的人,或花钱找人来解释这个给你。 不建议给Maven的服务邮箱来发邮件寻求支持。 安装Mav...

fanl1982
2014/01/23
1.2W
7

没有更多内容

加载失败,请刷新页面

加载更多

程序员职场:拥有一个学位将会在你的职业生涯中更加顺利!

1、作为程序员为什么要拥有学位? 很多情况下,作为程序员,学位是进入大公司的敲门砖。 现在很多大的科技公司,学位是硬性要求。 一般都是本科以上的学历,甚至有的必须是硕士以上学历。 如...

IT技术分享社区
03/03
12
0
varchar和nvarchar有什么区别? - What is the difference between varchar and nvarchar?

问题: Is it just that nvarchar supports multibyte characters? 只是nvarchar支持多字节字符吗? If that is the case, is there really any point, other than storage concerns, to us......

技术盛宴
41分钟前
12
0
用flutter给图片加个好看的遮罩层【flutter20个实例之六】

一、老套路,先看样式 左起图一是我业务中的样式,左起图二、三是下方源码展示样式(复制可直接运行,无额外组件引入) 二、讲解 1.结构拆分 我们先看下页面布局结构,首先肯定是有个GridVie...

一代码农码一代
41分钟前
17
0
世界上最美的瀑布在这里,太美了!

亲近大自然,高山流水遇知音,倾听心灵的声音。。。 声明:文章及图片、视频来自网络,如有版权方面的疑问请和我们联系,我们将在24小时内删除。 本文分享自微信公众号 - Python提升课堂(DJXY0...

花儿开放
2014/08/17
0
0
商城小程序制作流程

随着商城小程序的火爆,很多商家都迫不及待的想制作商城小程序,下面就和大家分享一下商城小程序制作流程? 第1步: 注册并认证小程序账号 注册并认证小程序账号,打开百度搜索,“微信公众平...

木鱼小铺小程序1
52分钟前
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部