# 特定文字列でログを分割したい

**URL:** <https://discuss.elastic.co/t/topic/211233>\
**Category:** 日本語による質問・議論はこちら\
**Created:** [December 10, 2019, 7:14am UTC](https://discuss.elastic.co/t/topic/211233 "2019-12-10T07:14:34Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![snowman\_1114](https://avatars.discourse-cdn.com/v4/letter/s/6a8cbe/32.png) [@snowman\_1114](https://discuss.elastic.co/u/snowman_1114)\
**Post date:** [December 10, 2019, 7:14am UTC](https://discuss.elastic.co/t/topic/211233/1 "2019-12-10T07:14:34Z")

</div>

特定文字列でログを分割することが可能か教えていただけますでしょうか。

例えば、

2019-12-10 10:00 AAAAA BBBBB CCCC DDDDCUTLINE2019-12-10 10:01 aaaaa bbbbb cccc ddddCUTLINE2019-12-10 10:02 FFFF GGGGG HHHH MMMM

というログがあり、2つのログが1行で出力されてしまっています。  
このログ形式の変更は、システム側の制約によりできなく、上記ログを"CUTLINE"という文字列で3つのログに分割出来ないかと思っております。

filterセクションでの記述によって、上記は可能でしょうか。  
"CUTLINE"が挿入される数は不規則です。

よろしくお願いいたします。

---

<div class="post-metadata">

**Author:** ![tsgkdt](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/tsgkdt/32/39151_2.png) [@tsgkdt](https://discuss.elastic.co/u/tsgkdt)\
**Post date:** [December 10, 2019, 7:35am UTC](https://discuss.elastic.co/t/topic/211233/2 "2019-12-10T07:35:55Z")

</div>

Logstashをお使いの場合は、splitフィルターでterminatorを指定することで実現ができるかと思います。

[https://www.elastic.co/guide/en/logstash/current/plugins-filters-split.html#plugins-filters-split-terminator](https://www.elastic.co/guide/en/logstash/current/plugins-filters-split.html#plugins-filters-split-terminator)

## 設定例

対象文字列がmessageに入っているとします。

```auto
filter {
 split {
   field => "message"
   terminator => "CUTLINE" # ←特定文字列で分割する指定
 }

  # これは改行コードを取るためだけ
  mutate {
    strip => ["message"]
  }
}

```

## 結果

ファイルから文字列を取り込んだときの例ですが、以下のようにCUTLINEで分割されて1行のログが、３件のログとなっています。

```auto
{
       "message" => "2019-12-10 10:00 AAAAA BBBBB CCCC DDDD",
          "host" => "AAA-BBB-12345",
    "@timestamp" => 2019-12-10T07:25:59.414Z,
      "@version" => "1",
          "path" => "/var/logs/1210.log"
}
{
       "message" => "2019-12-10 10:01 aaaaa bbbbb cccc dddd",
          "host" => "AAA-BBB-12345",
    "@timestamp" => 2019-12-10T07:25:59.414Z,
      "@version" => "1",
          "path" => "/var/logs/1210.log"
}
{
       "message" => "2019-12-10 10:02 FFFF GGGGG HHHH MMMM",
          "host" => "AAA-BBB-12345",
    "@timestamp" => 2019-12-10T07:25:59.414Z,
      "@version" => "1",
          "path" => "/var/logs/1210.log"
}

```

特定文字列（今回の場合はCUTLINE）がないとき、あるいは４つ５つとあったときでも、この方法であれば対応が可能かと思います。

ご参考になれば幸いです。

---

<div class="post-metadata">

**Author:** ![snowman\_1114](https://avatars.discourse-cdn.com/v4/letter/s/6a8cbe/32.png) [@snowman\_1114](https://discuss.elastic.co/u/snowman_1114)\
**Post date:** [December 11, 2019, 12:07am UTC](https://discuss.elastic.co/t/topic/211233/3 "2019-12-11T00:07:02Z")

</div>

お礼が遅くなり申し訳ありません。  
logstashを使っておりますので、教えていただいた方法で無事解決できました。ありがとうございました。

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [January 8, 2020, 12:07am UTC](https://discuss.elastic.co/t/topic/211233/4 "2020-01-08T00:07:07Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
