class Kafo::PuppetLogParser

Public Class Methods

new() click to toggle source
# File lib/kafo/puppet_log_parser.rb, line 3
def initialize
  @last_level = nil
end

Public Instance Methods

parse(line) click to toggle source
# File lib/kafo/puppet_log_parser.rb, line 7
def parse(line)
  line = normalize_encoding(line)
  method, message = case
                      when line =~ /^Error:(.*)/ || line =~ /^Err:(.*)/
                        [:error, $1]
                      when line =~ /^Warning:(.*)/ || line =~ /^Notice:(.*)/
                        [:warn, $1]
                      when line =~ /^Info:(.*)/
                        [:info, $1]
                      when line =~ /^Debug:(.*)/
                        [:debug, $1]
                      else
                        [@last_level.nil? ? :info : @last_level, line]
                    end

  @last_level = method
  return [method, message.chomp]
end

Private Instance Methods

normalize_encoding(line) click to toggle source
# File lib/kafo/puppet_log_parser.rb, line 28
def normalize_encoding(line)
  if line.respond_to?(:encode) && line.respond_to?(:valid_encoding?)
    line.valid_encoding? ? line : line.encode('UTF-16be', :invalid => :replace, :replace => '?').encode('UTF-8')
  else  # Ruby 1.8.7, doesn't worry about invalid encodings
    line
  end
end