logstash在消息中保持匹配的字段

时间:2016-11-30 16:38:14

标签: logstash elastic-stack logstash-grok grok

  

2016-11-30 15:43:09.3060调试20   Company.Product.LoggerDataFilter   [UOW:583ee57782fe0140c6dfbfd8] [DP:0]正在创建   用于记录器的DeviceDataTransformationRequest   [d:4E3239200C5032593D004100]。

     

%{TIMESTAMP_ISO8601:timestamp}%{LOGLEVEL:loglevel} \ s +%{INT:threadId}   %{DATA:loggerName}%{UOW}%{DATAPACKET}%{GREEDYDATA:message}   %{DEVICEID}

输出是

{
  "timestamp": [
    "2016-11-30 15:43:09.3060"
  ],
  "loglevel": [
    "DEBUG"
  ],
  "threadId": [
    "20"
  ],
  "loggerName": [
    "Tts.IoT.DataLogger.Etl.Core.Filters.LoggerDataFilter"
  ],
  "correlationId": [
    "583ee57782fe0140c6dfbfd8"
  ],
  "datapacket": [
    "0"
  ],
  "message": [
    "Creating DeviceDataTransformationRequest for logger"
  ],
  "deviceId": [
    "4E3239200C5032593D004100"
  ]
}

哪个好 - 除了 - 消息现在缺少我提取的DEVICEID属性。 我想要它们 - 作为一个单独的字段并仍然保留在消息中。

你能做到吗?

(旁注...在这方面,像serilog这样的结构化日志如何帮助?)

1 个答案:

答案 0 :(得分:0)

尝试改变它怎么样

%{GREEDYDATA:message}%{DEVICEID}

%{GREEDYDATA:testmessage} %{DEVICEID}
然后添加一个字段

mutate {
  add_field => {
    "message" => "%{testmessage} %{DEVICEID}"
  }
  remove_field => ["testmessage"]
}