骨のダイスを転がそう
2009-06-11
class CombinedLog
require 'strscan'
require 'uri'
attr_accessor :host,:ident,:user,:datetime,:method,:target,:protocol,:statuscode,:size,:referer,:useragent
def initialize(line)
s = StringScanner.new(line)
# ホスト名
@host = s.scan(/[^\s]+/)
s.scan(/\s+/)
@ident = s.scan(/\S+/)
s.scan(/\s+/)
# ユーザー名
@user = s.scan(/\S+/)
s.scan(/\s+/)
# 時間
@datetime = s.scan(/\[.*?\]/)
s.scan(/\s+"/)
# メソッド
@method = s.scan(/\S+/)
s.scan(/\s+/)
# ファイル名
@target = to_uri =s.scan(/\S+/)
s.scan(/\s+/)
# プロトコル
@protocol = s.scan(/[^"\s]+/)
s.scan(/"\s+/)
# ステータスコード
@statuscode = s.scan(/\S+/)
s.scan(/\s+/)
# サイズ
@size = s.scan(/\S+/)
s.scan(/\s+"/)
# リファラ
_referer = s.scan(/[^"\s]+/)
s.scan(/"\s/)
@referer = URI.parse(_referer)
# ユーザーエージェント
@useragent = s.scan(/".*"/)
end
end
[ツッコミを入れる]