Class: MySlog
- Inherits:
-
Object
- Object
- MySlog
- Defined in:
- lib/myslog.rb
Instance Method Summary collapse
Instance Method Details
#divide(lines) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/myslog.rb', line 25 def divide(lines) records = [] line = lines.shift while line record = [] if line.start_with? "# Time:" record << line record << lines.shift # user@host record << lines.shift # query time else record << line # user@host record << lines.shift # query time end sql = [] while (line = lines.shift) != nil && !line.start_with?("#") sql << line.strip end record << sql.join(" ") records << record end records end |
#parse(lines) ⇒ Object
21 22 23 |
# File 'lib/myslog.rb', line 21 def parse(lines) divide(lines).map {|record| parse_record(record) } end |
#parse_record(lines) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/myslog.rb', line 54 def parse_record(lines) response = {} line = lines.shift if line.start_with? "# Time:" date = line[8..-1].strip response[:date] = Time.parse(date) line = lines.shift else response[:date] = nil end elems = line.split(" ") response[:user] = elems[2].strip response[:host] = elems[4].strip response[:host_ip] = elems[5].strip[1...-1] line = lines.shift elems = line.split(" ") response[:query_time] = elems[2].to_f response[:lock_time] = elems[4].to_f response[:rows_sent] = elems[6].to_i response[:rows_examined] = elems[8].to_i response[:sql] = lines.map{|line| line.strip}.join("\n") response end |