Sha256: 04fef9d4847dd31f6014b04aacfe585526d2c492587c807840642dc66d180e12

Contents?: true

Size: 1.15 KB

Versions: 22

Compression:

Stored size: 1.15 KB

Contents

module ORS

  class LogUnifier

    attr_reader :logs, :pretty_adjust

    def initialize logs
      @pretty_adjust = 0

      @logs = logs.inject(Hash.new) do |hash, (server, log_rows)|
        @pretty_adjust = [@pretty_adjust, server.length].max
        hash[server] = log_rows
        hash
      end
    end

    def unify
      group_by_entry.
        select {|entry| entry[:timestamp].size == 14 }.
        sort_by {|entry| entry[:timestamp] }.
        map do |entry|
          entry[:lines].
          map {|line| ["[#{entry[:server]}]".ljust(pretty_adjust + 3), line].join }.
          join "\n"
        end.
        flatten.
        join("\n\n\n")
    end

    private

    def group_by_entry
      entries = Array.new

      logs.each do |server, log_rows|
        log_rows.split(/\n\n\n/).each do |line|
          line.gsub!(/^.*?Started/m, "Started") unless line =~ /\AStarted/
          timestamp, _ = line.scan(/^(?:Processing|Started).*?(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}).*$/).first

          entries << {:timestamp => timestamp.gsub(/\D/, ""), :lines => line.split(/\n/), :server => server} if timestamp
        end
      end

      entries
    end

  end

end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
ors-0.2.10 lib/ors/log_unifier.rb
ors-0.2.9 lib/ors/log_unifier.rb
ors-0.2.8 lib/ors/log_unifier.rb
ors-0.2.7 lib/ors/log_unifier.rb
ors-0.2.6 lib/ors/log_unifier.rb
ors-0.2.5 lib/ors/log_unifier.rb
ors-0.2.4 lib/ors/log_unifier.rb
ors-0.2.3 lib/ors/log_unifier.rb
ors-0.2.2 lib/ors/log_unifier.rb
ors-0.2.1 lib/ors/log_unifier.rb
ors-0.2.0 lib/ors/log_unifier.rb
ors-0.1.8 lib/ors/log_unifier.rb
ors-0.1.7 lib/ors/log_unifier.rb
ors-0.1.5 lib/ors/log_unifier.rb
ors-0.1.4 lib/ors/log_unifier.rb
ors-0.1.3 lib/ors/log_unifier.rb
ors-0.1.2 lib/ors/log_unifier.rb
ors-0.1.1 lib/ors/log_unifier.rb
ors-0.1.0 lib/ors/log_unifier.rb
ors-0.0.9 lib/ors/log_unifier.rb