Class: Rails::Pretty::Logger::PrettyLogger

Inherits:
Object
  • Object
show all
Defined in:
lib/rails/pretty/logger.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(params) ⇒ PrettyLogger

Returns a new instance of PrettyLogger.



7
8
9
10
# File 'lib/rails/pretty/logger.rb', line 7

def initialize(params)
  @log_file = params[:log_file]
  @filter_params = params
end

Class Method Details

.file_size(log_file) ⇒ Object



20
21
22
# 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_listObject



29
30
31
32
# 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_listObject



24
25
26
27
# 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) ⇒ Object



16
17
18
# File 'lib/rails/pretty/logger.rb', line 16

def self.highlight(log)
  self.logger.tagged('HIGHLIGHT') { logger.info log }
end

.loggerObject



12
13
14
# File 'lib/rails/pretty/logger.rb', line 12

def self.logger
  Rails.logger
end

.logs_atr(log_files) ⇒ Object



34
35
36
37
38
39
40
41
42
# 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

Instance Method Details

#clear_logsObject



44
45
46
# File 'lib/rails/pretty/logger.rb', line 44

def clear_logs
  open(@log_file, File::TRUNC) {}
end

#end_dateObject



52
53
54
# 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) ⇒ Object



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# 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) ⇒ Object



89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# 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) ⇒ Object



81
82
83
84
85
86
87
# 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) ⇒ Object



73
74
75
76
77
78
79
# 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) ⇒ Boolean

Returns:

  • (Boolean)


105
106
107
# File 'lib/rails/pretty/logger.rb', line 105

def line_include_date?(line)
  line.include?("Started")
end

#log_dataObject



121
122
123
124
125
126
127
128
129
130
131
132
133
# 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_valueObject



135
136
137
138
139
140
141
142
143
# 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_dateObject



48
49
50
# 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_dateObject



109
110
111
112
113
114
115
116
117
118
119
# 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