Class: Rails::Pretty::Logger::PrettyLogger
- Inherits:
-
Object
- Object
- Rails::Pretty::Logger::PrettyLogger
- Defined in:
- lib/rails/pretty/logger.rb
Class Method Summary collapse
- .file_size(log_file) ⇒ Object
- .get_hourly_log_file_list ⇒ Object
- .get_log_file_list ⇒ Object
- .highlight(log) ⇒ Object
- .logger ⇒ Object
- .logs_atr(log_files) ⇒ Object
Instance Method Summary collapse
- #clear_logs ⇒ Object
- #end_date ⇒ Object
- #filter_logs_with_date(file) ⇒ Object
- #get_date_from_log_line(line) ⇒ Object
- #get_logs_from_file(file) ⇒ Object
- #get_test_logs(file) ⇒ Object
-
#initialize(params) ⇒ PrettyLogger
constructor
A new instance of PrettyLogger.
- #line_include_date?(line) ⇒ Boolean
- #log_data ⇒ Object
- #set_divider_value ⇒ Object
- #start_date ⇒ Object
- #validate_date ⇒ Object
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_list ⇒ Object
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_list ⇒ Object
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 |
.logger ⇒ Object
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_logs ⇒ Object
44 45 46 |
# File 'lib/rails/pretty/logger.rb', line 44 def clear_logs open(@log_file, File::TRUNC) {} end |
#end_date ⇒ Object
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
105 106 107 |
# File 'lib/rails/pretty/logger.rb', line 105 def line_include_date?(line) line.include?("Started") end |
#log_data ⇒ Object
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_value ⇒ Object
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_date ⇒ Object
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_date ⇒ Object
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 |