Initialize Analyse-Console
This commit is contained in:
parent
338daed210
commit
7aa766163a
12
bin/logansh
Executable file
12
bin/logansh
Executable file
|
@ -0,0 +1,12 @@
|
||||||
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
|
require 'logan/analyse'
|
||||||
|
require 'active_support'
|
||||||
|
require 'irb'
|
||||||
|
|
||||||
|
$logan = LogAn::Analyse.new 'logs'
|
||||||
|
begin
|
||||||
|
IRB.start __FILE__
|
||||||
|
ensure
|
||||||
|
$logan.close
|
||||||
|
end
|
49
lib/logan/analyse.rb
Normal file
49
lib/logan/analyse.rb
Normal file
|
@ -0,0 +1,49 @@
|
||||||
|
|
||||||
|
require 'logan/loglines'
|
||||||
|
require 'time'
|
||||||
|
|
||||||
|
class LogAn::Analyse
|
||||||
|
attr_reader :lines
|
||||||
|
|
||||||
|
def close
|
||||||
|
@lines.close
|
||||||
|
end
|
||||||
|
|
||||||
|
def initialize lines
|
||||||
|
@lines = String === lines ? LogAn::Loglines.new( lines) : lines
|
||||||
|
end
|
||||||
|
|
||||||
|
def extremum val
|
||||||
|
val = case val
|
||||||
|
when String then Time.parse val
|
||||||
|
when Integer then Time.at val
|
||||||
|
when Time then val
|
||||||
|
else raise ArgumentError, "Unknwon type: #{val}", caller[ 1..-1]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def timerange min, max = nil
|
||||||
|
exend = false
|
||||||
|
min, max, exend = min.min, min.max, min.exclude_end? if Range === min
|
||||||
|
Range.new extremum( min), extremum( max), exend
|
||||||
|
end
|
||||||
|
|
||||||
|
def dbs min, max = nil, &exe
|
||||||
|
return Enumerator.new( self, :dbs, min, max) unless exe
|
||||||
|
range = timerange min, max
|
||||||
|
@lines.rdb.each &exe
|
||||||
|
end
|
||||||
|
|
||||||
|
def search min, max = nil, &exe
|
||||||
|
dbs = @lines.dbs
|
||||||
|
range = timerange min, max
|
||||||
|
@lines.rdb.each do |time, db|
|
||||||
|
dbs[ UUIDTools::UUID.parse_raw( db)].each &exe if range === Time.at( *time.unpack( 'N'))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
alias [] search
|
||||||
|
|
||||||
|
def each min, max = nil, &exe
|
||||||
|
exe ? search( min, max, &exe) : Enumerator.new( self, :search, min, max)
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue