Logstash-将JSON转换为可读格式-在记录到文件期间

Logstash-将JSON转换为可读格式-在记录到文件期间,json,logging,logstash,human-readable,Json,Logging,Logstash,Human Readable,我有一个日志存储配置,如下所示: input { udp { port => 5043 codec => json } } output { file { path => "/logfile.log" } } 我试图在“logfile.log”中记录更可读的消息 所以如果我的输入数据像{“attr1”:“val1”,“attr2”:“val2”} 我想在日志中写为: 属性1|val1 |属性2|val2 基本上将数据从JSON转换为可读格

我有一个日志存储配置,如下所示:

 input {
  udp {
  port => 5043
  codec => json
  }
 }

 output {
  file {
  path => "/logfile.log"
  }
 }
我试图在“logfile.log”中记录更可读的消息

所以如果我的输入数据像{“attr1”:“val1”,“attr2”:“val2”}

我想在日志中写为:

属性1|val1 |属性2|val2

基本上将数据从JSON转换为可读格式


我应该在日志存储配置中修改什么才能做到这一点?

输出的message\u format选项允许您指定如何格式化每条消息。如果消息的密钥是固定的且已知的,您可以简单地执行以下操作:

output {
  file {
    message_format => "attr1_%{attr1} | attr2_%{attr2}"
    ...
  }
}
要处理任意字段,您可能需要使用编写一些自定义Ruby代码。例如,以下筛选器生成与上面相同的结果,但不要求您硬编码字段名称:

filter {
  ruby {
    code => '
      values = []
      event.to_hash.each { |k, v|
        next if k.start_with? "@"
        values << "#{k}_#{v.to_s}"
      }
      event["myfield"] = values.join(" | ")
    '
  }
}

output {
  file {
    message_format => "%{myfield}"
    ...
  }
}
过滤器{
红宝石{
代码=>'
值=[]
event.to_hash.each{k,v|
下一步如果k.以“@”开头

值输出的message\u format选项允许您指定如何格式化每条消息。如果消息的键是固定的且已知的,您可以简单地执行以下操作:

output {
  file {
    message_format => "attr1_%{attr1} | attr2_%{attr2}"
    ...
  }
}
要处理任意字段,您可能必须使用编写一些自定义Ruby代码。例如,以下筛选器生成与上面相同的结果,但不需要您硬编码字段名称:

filter {
  ruby {
    code => '
      values = []
      event.to_hash.each { |k, v|
        next if k.start_with? "@"
        values << "#{k}_#{v.to_s}"
      }
      event["myfield"] = values.join(" | ")
    '
  }
}

output {
  file {
    message_format => "%{myfield}"
    ...
  }
}
过滤器{
红宝石{
代码=>'
值=[]
event.to_hash.each{k,v|
下一步如果k.以“@”开头
价值观