アペフチ

Fluentd設定ファイルのシンタックスハイライト

RougeというRuby製のシンタックスハイライト用ライブラリーがあって、それのFluentd設定ファイル用の追加レクサー(トークナイザー)を作ってみた。

https://github.com/KitaitiMakoto/rouge-lexers-fluentd

始めはApache用のレクサーを使ってみたんだけどうまくいかなかった。<Directory>とかのキーワードがホワイトリスト形式だったり(これはサブクラス作ることで簡単に解決できたけど)、やっぱりFluentd独自の構文に対応したくなったりしてきたので、自分で書いたのだった。

使ってみると、こんな感じ。

# Receive events from 24224/tcp
# This is used by log forwarding and the fluent-cat command
<source>
  @type forward
  port 24224
</source>

# http://this.host:9880/myapp.access?json={"event":"data"}
<source>
  @type http
  port 9880
</source>

# Match events tagged with "myapp.access" and
# store them to /var/log/fluent/access.%Y-%m-%d
# Of course, you can control how you partition your data
# with the time_slice_format option.
<match myapp.access>
  @type file
  path /var/log/fluent/access
</match>

Rougeはターミナル向けにもフォーマットできる。 シンタックスハイライトのターミナルアウトプット

READMEに書いた通りまだやることは残っているけど、取り敢えず最低限の用はなすと思う。具体的には、『サーバ/インフラエンジニア養成読本 ログ収集〜可視化編』のシンタックスハイライトをできる程度には使える。

サーバ/インフラエンジニア養成読本 ログ収集〜可視化編でのシンタックスハイライト