class Rails::Pretty::Logger::PrettyLogger

Public Class Methods

file_size(log_file) click to toggle source
# File lib/rails/pretty/logger.rb, line 20
def self.file_size(log_file)
  File.size?("#{log_file}").to_f / 2**20
end
get_hourly_log_file_list() click to toggle source
# File lib/rails/pretty/logger.rb, line 29
def self.get_hourly_log_file_list
  log_files =  Dir["#{Rails.root}/log/hourly/**/*.*"].sort
  self.logs_atr(log_files)
end
get_log_file_list() click to toggle source
# File lib/rails/pretty/logger.rb, line 24
def self.get_log_file_list
  log_files =  Dir["#{File.join(Rails.root, 'log')}" + "/**.*"]
  self.logs_atr(log_files)
end
highlight(log) click to toggle source
# File lib/rails/pretty/logger.rb, line 16
def self.highlight(log)
  self.logger.tagged('HIGHLIGHT') { logger.info log }
end
logger() click to toggle source
# File lib/rails/pretty/logger.rb, line 12
def self.logger
  Rails.logger
end
logs_atr(log_files) click to toggle source
# File lib/rails/pretty/logger.rb, line 34
def self.logs_atr(log_files)
  log = {}
  log_files.each_with_index do |log_file,index|
    log[index] = {}
    log[index][:file_name] =  log_file
    log[index][:file_size] = self.file_size(log_file).round(4)
  end
  log
end
new(params) click to toggle source
# File lib/rails/pretty/logger.rb, line 7
def initialize(params)
  @log_file = params[:log_file]
  @filter_params = params
end

Public Instance Methods

clear_logs() click to toggle source
# File lib/rails/pretty/logger.rb, line 44
def clear_logs
  open(@log_file, File::TRUNC) {}
end
end_date() click to toggle source
# File lib/rails/pretty/logger.rb, line 52
def end_date
  @filter_params.dig(:date_range, :end) || Time.now.strftime("%Y-%m-%d")
end
filter_logs_with_date(file) click to toggle source
# File lib/rails/pretty/logger.rb, line 56
def filter_logs_with_date(file)
  arr = []
  start = false

  IO.foreach(file) do |line|
    if get_date_from_log_line(line)
      start = true
      arr.push(line)
    elsif start && !(line_include_date?(line))
      arr.push(line)
    else
      start = false
    end
  end
  return arr
end
get_date_from_log_line(line) click to toggle source
# File lib/rails/pretty/logger.rb, line 89
def get_date_from_log_line(line)
  params = @filter_params[:date_range]
  if line_include_date?(line)
    date_string_index = line.index("at ")
    string_date = line[date_string_index .. date_string_index + 13]
    date = string_date.to_date.strftime("%Y-%m-%d")
    start_date = @filter_params.dig(:date_range, :start)
    end_date = @filter_params.dig(:date_range, :end)
    if start_date.present? && end_date.present?
      date.between?(start_date, end_date)
    else
      date.between?(Time.now.strftime("%Y-%m-%d"), Time.now.strftime("%Y-%m-%d"))
    end
  end
end
get_logs_from_file(file) click to toggle source
# File lib/rails/pretty/logger.rb, line 81
def get_logs_from_file(file)
  if @filter_params[:log_file].include?("test") || @filter_params[:log_file].include?("hourly")
    get_test_logs(file)
  else
    filter_logs_with_date(file)
  end
end
get_test_logs(file) click to toggle source
# File lib/rails/pretty/logger.rb, line 73
def get_test_logs(file)
  arr = []
  IO.foreach(file) do |line|
    arr.push(line)
  end
  return arr
end
line_include_date?(line) click to toggle source
# File lib/rails/pretty/logger.rb, line 105
def line_include_date?(line)
  line.include?("Started")
end
log_data() click to toggle source
# File lib/rails/pretty/logger.rb, line 121
def log_data
  error = validate_date
  divider = set_divider_value
  logs = get_logs_from_file(@log_file)
  logs_count =  (logs.count.to_f / divider).ceil
  paginated_logs = logs[ @filter_params[:page].to_i * divider ..
  (@filter_params[:page].to_i * divider) + divider ]
  data = {}
  data[:logs_count] = logs_count
  data[:paginated_logs] = paginated_logs
  data[:error] = error
  return data
end
set_divider_value() click to toggle source
# File lib/rails/pretty/logger.rb, line 135
def set_divider_value
  if @filter_params[:date_range].blank?
    100
  elsif @filter_params[:date_range][:divider].blank?
    100
  else
    @filter_params[:date_range][:divider].to_i
  end
end
start_date() click to toggle source
# File lib/rails/pretty/logger.rb, line 48
def start_date
  @filter_params.dig(:date_range, :start) || Time.now.strftime("%Y-%m-%d")
end
validate_date() click to toggle source
# File lib/rails/pretty/logger.rb, line 109
def validate_date
  start_date = @filter_params.dig(:date_range, :start)
  end_date = @filter_params.dig(:date_range, :end)
  if (start_date.present? && end_date.present?)
    if (start_date > end_date)
      "End Date should not be less than Start Date."
    end
  else
    "Start and End Date must be given."
  end
end