Browse Subversion Repository
Contents of /logclef/ext-session.rb
Parent Directory
| Revision Log
Revision 4 -
( show annotations)
( download)
Sat Jul 3 09:21:08 2010 UTC
(13 years, 11 months ago)
by masao
File size: 1233 byte(s)
indent.
| 1 |
#!/usr/bin/env ruby |
| 2 |
# -*- coding: utf-8 -*- |
| 3 |
# $Id: ext-session.rb,v 1.1 2010/07/03 06:53:48 masao Exp $ |
| 4 |
|
| 5 |
# セッション単位でログデータを抽出する。 |
| 6 |
|
| 7 |
require "time" |
| 8 |
|
| 9 |
def load_logdata( io = ARGF ) |
| 10 |
sessions = {} |
| 11 |
ARGF.each do |line| |
| 12 |
actionid, userid, userip, sesid, lang, query, action, colid, nrrecords, recordpos, sboxid, objurl, time = line.chomp.split( /\t/ ) |
| 13 |
if sesid.empty? or sesid == "null" |
| 14 |
sesid = userip |
| 15 |
end |
| 16 |
sessions[ sesid ] ||= [] |
| 17 |
sessions[ sesid ] << [ actionid, userid, userip, sesid, lang, query, action, colid, nrrecords, recordpos, sboxid, objurl, time ] |
| 18 |
end |
| 19 |
STDERR.puts "Session size: #{ sessions.keys.size }" |
| 20 |
sessions |
| 21 |
end |
| 22 |
|
| 23 |
if $0 == __FILE__ |
| 24 |
sessions = load_logdata |
| 25 |
|
| 26 |
# session_keys = sessions.keys.sort_by{|e| sessions[e][0][12] } |
| 27 |
# puts session_keys[ 0..20 ] |
| 28 |
sessions.keys.each do |sesid| |
| 29 |
session = sessions[ sesid ] |
| 30 |
last_time = nil |
| 31 |
idx = 0 |
| 32 |
session.each do |data| |
| 33 |
if last_time and Time.parse( data[12] ) > ( last_time + 1800 ) |
| 34 |
idx += 1 |
| 35 |
end |
| 36 |
data[ 3 ] = "#{ sesid }-#{ idx }" |
| 37 |
last_time = Time.parse( data[12] ) |
| 38 |
puts data.join( "\t" ) |
| 39 |
end |
| 40 |
end |
| 41 |
end |
| |