module Libis::Ingester::Base::Log2Csv
Constants
- CSV_HEADER
Public Instance Methods
log2csv(log_file, csv_file = nil, options = {})
click to toggle source
# File lib/libis/ingester/tasks/base/log_to_csv.rb, line 11 def log2csv(log_file, csv_file = nil, options = {}) log_in = IO === log_file ? log_file : File.open(log_file, 'r') csv_out = csv_file ? File.open(csv_file, 'w') : StringIO.new log2csv_io(log_in, csv_out, options) log_in.close return csv_out if StringIO === csv_out csv_out.close end
log2csv_io(log_in, csv_out = nil, options = {})
click to toggle source
@param [IO] log_in @param [IO] csv_out @param [Hash] options
# File lib/libis/ingester/tasks/base/log_to_csv.rb, line 23 def log2csv_io(log_in, csv_out = nil, options = {}) csv_out ||= StringIO.new line_regex = /^(.), \[([\d-]+)T([\d:.]+) #([\d.]+)\]\s+(\S+)\s+-- (.*?) - (.*?) : (.*)/ buffer = CSV_HEADER log_in.each_line do |line| if line =~ line_regex write_buffer_to_csv(buffer, csv_out, options) buffer = [$1, $2, $3, $4, $5, $6, $7, $8] elsif options[:trace] buffer[7] += "\n#{line}" end end ensure write_buffer_to_csv(buffer, csv_out, options) csv_out.rewind csv_out end
Protected Instance Methods
write_buffer_to_csv(buffer, csv_out, options)
click to toggle source
# File lib/libis/ingester/tasks/base/log_to_csv.rb, line 43 def write_buffer_to_csv(buffer, csv_out, options) return if buffer.empty? || buffer.all? {|x| x.strip.empty?} return if buffer != CSV_HEADER && options[:filter] && !options[:filter].upcase.include?(buffer[0]) csv_out.puts( CSV.generate_line( (options[:skip_date] ? [buffer[4], buffer[5], buffer[6], buffer[7]] : [buffer[4], buffer[1], buffer[2], buffer[5], buffer[6], buffer[7]] ), col_sep: ';', quote_char: '"' ) ) end