我不确定这是this one的后续问题还是单独的问题。有一些关于LogStash的文章没有被点击。为此,我为一个相关的问题道歉。尽管如此,我还是要疯了。
我有一个可以将日志写入文件的应用程序。每个日志条目都是一个JSON对象。我的.json文件示例如下所示:
{
  "logger":"com.myApp.ClassName",
  "timestamp":"1456976539634",
  "level":"ERROR",
  "thread":"pool-3-thread-19",
  "message":"Danger. There was an error",
  "throwable":"java.Exception"
},
{
  "logger":"com.myApp.ClassName",
  "timestamp":"1456976539649",
  "level":"ERROR",
  "thread":"pool-3-thread-16",
  "message":"I cannot go on",
  "throwable":"java.Exception"
}这种格式是从Log4j2的JsonLayout创建的。我正在尽我最大的努力把日志记录到LogStash中。为了做到这一点,我创建了以下LogStash配置文件:
input {
  file {
    type => "log4j"
    path => "/logs/mylogs.log"
  }
}
output {
  file {
    path => "/logs/out.log"
  }
}当我打开/logs/out.log时,我看到一片混乱。这是JSON。但是,我没有看到Log4J生成的"level“属性或"thread”属性。记录的示例如下所示:
{"message":"Danger. There was an error","@version":"1","@timestamp":"2014-04-08T17:20:10.035Z","type":"log4j","host":"ip-myAddress","path":"/logs/mylogs.log"}有时我甚至会遇到解析错误。我需要我的属性仍然是属性。我不希望它们被塞到消息部分或输出中。我有预感这跟编解码器有关。不过,我还不确定。我不确定是否应该更改logstash输入配置上的编解码器。或者,如果我应该更改输出配置上的输入。我将真诚地感谢任何帮助,因为我在这一点上变得绝望。
发布于 2014-04-09 08:54:54
你能改变你的日志格式吗?
在我将日志格式更改为
{ "logger":"com.myApp.ClassName", "timestamp":"1456976539634", "level":"ERROR", "thread":"pool-3-thread-19", "message":"Danger. There was an error",  "throwable":"java.Exception" }
{ "logger":"com.myApp.ClassName", "timestamp":"1456976539649", "level":"ERROR", "thread":"pool-3-thread-16", "message":"I cannot go on", "throwable":"java.Exception" }每行一个json日志,并且在日志末尾没有",",我可以使用下面的配置将json消息解析为相应的字段。
input {
    file {
       type => "log4j"
       path => "/logs/mylogs.log"
       codec => json
    }
}https://stackoverflow.com/questions/22944168
复制相似问题