gpt4 book ai didi

log4j - 在 Logstash 中解析 JSON

转载 作者:行者123 更新时间:2023-12-04 17:35:04 25 4
gpt4 key购买 nike

我有一些由 Log4J2 生成的日志文件.我使用 log4j2.xml 配置文件中的 JSONLayout 将日志输出到 .json 文件中。我的 JSONLayout 定义如下:

<JSONLayout complete="false"></JSONLayout>

当日志输入到我机器上的日志文件中时,它们会一个接一个地附加,在 logs.log 中看起来像这样:
  {
"logger":"com.mycompany.myLogger",
"timestamp":"1396792374326",
"level":"ERROR",
"thread":"pool-2-thread-2",
"message":"System: unable to perform action",
"throwable":"java.lang.NullPointerException\\n\tat com.myCompany.MyClass $.java:432)\\n\tat java.lang.Thread.run(Thread.java:744)\\n"
},

我正在尝试构建这个 JSON,以便我可以从 ElasticSearch 中查询它。在此过程中,我尝试向所有记录添加自定义字段。为此,我正在使用以下内容:
input {
file {
type => "json"
path => "/var/logs/myApp/logs.log"
}
}
filter {
json {
add_tag => [ "HardcodedTagName"]
source => "message"
}
}
output {
elasticsearch {
protocol => "http"
codec => "json"
host => "[myServerAddress]"
port => "9200"
}
}

奇怪的是,我的自定义标签似乎从未被添加。同时,我真的很想将我的 JSON 分解为可以在 ElasticSearch 中查询的字段。我想查询的东西显然是可用的。他们是:
  • 级别
  • 留言
  • 时间戳

  • 然而,我似乎无法得到这些信息。当我在 Kibana 中看到 JSON 记录时,我只看到如下内容:
    {
    "_index": "logstash-2014.04.07",
    "_type": "json",
    "_id": "tG-s6-5pSnq5HZwLhM6Dxg",
    "_score": null,
    "_source": {
    "message": " \"message\":\"System: unable to perform action\"\r",
    "@version": "1",
    "@timestamp": "2014-04-07T18:01:38.739Z",
    "type": "json",
    "host": "ip-MyipAddress",
    "path": "/var/logs/myApp/logs.log"
    },
    "sort": [
    1396893698739,
    1396893698739
    ]
    }

    最让我惊讶的是日志级别甚至不存在。线程信息也不是。我很惊讶我找不到使用过滤器的 Log4J 示例的博客文章。任何帮助表示衷心感谢!

    最佳答案

    您不需要使用 json 过滤器。您可以指定 编解码器在您的输入格式。

    input {
    file {
    type => "json"
    path => "/var/logs/myApp/logs.log"
    codec => json
    }
    }

    Logstash 会自动将你的日志解析为 json 格式并添加相应的字段。

    关于log4j - 在 Logstash 中解析 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22920445/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com