LTSVとは、Labeled Tab-serapated Valuesの略で、TSV(Tab-separated Values)の拡張である。
下記のようなApache Combined Log Formatによるアクセスログは
127.0.0.1 - frank [10/Oct/2000:13:55:36 -0700] "GET /apache_pb.gif HTTP/1.0" 200 2326 "http://www.example.com/start.html" "Mozilla/4.08 [en] (Win98; I ;Nav)"
LTSVでは以下のように表現される
host:127.0.0.1<TAB>ident:-<TAB>user:frank<TAB>time:[10/Oct/2000:13:55:36 -0700]<TAB>req:GET /apache_pb.gif HTTP/1.0<TAB>status:200<TAB>size:2326<TAB>referer:http://www.example.com/start.html<TAB>ua:Mozilla/4.08 [en] (Win98; I ;Nav)
LTSV形式にすることで、Parserを簡単に記述することができる。
#!/usr/bin/env ruby while gets record = Hash[$_.split("\t").map{|f| f.split(":", 2)}] p record end
公式サイト( http://ltsv.org )では、10種類以上の言語によるParser実装が公開されている。
LTSV FAQ - LTSV って何? どういうところが良いの? - naoyaのはてなダイアリー にまとめられている。