以下是我需要使用logstash和logstash grok过滤器解析的日志示例:
2018-02-12 15:17:39.216 [DEBUG] [ 60] [CashTransactionReportCommand] [4564 456] - Xml of valid cash: <NewDataSet>
<Table>
<transaction_id>546464</transaction_id>
<device_trans_id>24</device_trans_id>
<value>3.5000</value>
<product_code>40</product_code>
<product_pa_code>E1</product_pa_code>
<catalog_number />
<decimal_place>2</decimal_place>
<site_id>2</site_id>
<machineSeTime>2018-02-12T17:17:39.273+00:00</machineSeTime>
<payment_method_id>3</payment_method_id>
<actor_id>4566</actor_id>
<operator_id>55</operator_id>
</Table>
</NewDataSet>
我几乎拥有我需要的一切:
%{TIMESTAMP_ISO8601:log_timestamp} \[%{LOGLEVEL:loglevel}\] \[%{DATA:snId}\] \[%{WORD:snName}\] (?<test>\[\d+ \d+\]) %{GREEDYDATA:logmessage}
我唯一的问题是“logmessage”。我需要它包含通过“[4564 456]”的所有内容,直到示例结束。
答案 0 :(得分:0)
为了能够解析消息(包括XML),您必须在同一个logstash事件中对所有行进行分组,以便在使用grok过滤器时,消息字段包含整个消息。这可以做到: