rails-pretty-logger 0.1.0 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +18 -1
- data/app/assets/javascripts/rails/pretty/logger/application.js +13 -0
- data/app/assets/javascripts/rails/pretty/logger/list.min.js +2 -0
- data/app/assets/stylesheets/rails/pretty/logger/dashboards.css +126 -112
- data/app/assets/stylesheets/rails/pretty/logger/list.css +94 -0
- data/app/controllers/rails/pretty/logger/dashboards_controller.rb +11 -2
- data/app/controllers/rails/pretty/logger/hourly_logs_controller.rb +30 -0
- data/app/helpers/rails/pretty/logger/application_helper.rb +9 -0
- data/app/helpers/rails/pretty/logger/dashboards_helper.rb +7 -9
- data/app/views/partials/_error_pagination.html.erb +21 -0
- data/app/views/partials/_navbar.html.erb +14 -0
- data/app/views/rails/pretty/logger/dashboards/index.html.erb +25 -17
- data/app/views/rails/pretty/logger/dashboards/logs.html.erb +2 -33
- data/app/views/rails/pretty/logger/hourly_logs/index.html.erb +39 -0
- data/app/views/rails/pretty/logger/hourly_logs/logs.html.erb +37 -0
- data/config/routes.rb +6 -0
- data/lib/rails/pretty/logger.rb +117 -127
- data/lib/rails/pretty/logger/active_support_logger.rb +107 -0
- data/lib/rails/pretty/logger/config/logger_config.rb +17 -0
- data/lib/rails/pretty/logger/console_formatter.rb +14 -0
- data/lib/rails/pretty/logger/console_logger.rb +14 -0
- data/lib/rails/pretty/logger/engine.rb +2 -5
- data/lib/rails/pretty/logger/rails_logger.rb +153 -0
- data/lib/rails/pretty/logger/version.rb +1 -1
- metadata +20 -4
@@ -2,9 +2,9 @@ require_dependency "rails/pretty/logger/application_controller"
|
|
2
2
|
|
3
3
|
module Rails::Pretty::Logger
|
4
4
|
class DashboardsController < ApplicationController
|
5
|
+
before_action :set_logger, except: [:index]
|
5
6
|
|
6
7
|
def logs
|
7
|
-
@log = PrettyLogger.new(params)
|
8
8
|
@log_data = @log.log_data
|
9
9
|
end
|
10
10
|
|
@@ -13,9 +13,18 @@ module Rails::Pretty::Logger
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def clear_logs
|
16
|
-
|
16
|
+
@log.clear_logs
|
17
17
|
redirect_to logs_dashboards_path({log_file: params[:log_file]})
|
18
18
|
end
|
19
19
|
|
20
|
+
private
|
21
|
+
|
22
|
+
def dashboard_params
|
23
|
+
params.permit( :log_file, :utf8, :_method, :authenticity_token, :commit, :page, date_range: [:end, :start, :divider])
|
24
|
+
end
|
25
|
+
|
26
|
+
def set_logger
|
27
|
+
@log = PrettyLogger.new(dashboard_params)
|
28
|
+
end
|
20
29
|
end
|
21
30
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require_dependency "rails/pretty/logger/application_controller"
|
2
|
+
|
3
|
+
module Rails::Pretty::Logger
|
4
|
+
class HourlyLogsController < ApplicationController
|
5
|
+
before_action :set_logger, except: [:index]
|
6
|
+
|
7
|
+
def logs
|
8
|
+
@log_data = @log.log_data
|
9
|
+
end
|
10
|
+
|
11
|
+
def index
|
12
|
+
@log_file_list = PrettyLogger.get_hourly_log_file_list.select{ |_,file| file[:file_size] > 0 }
|
13
|
+
end
|
14
|
+
|
15
|
+
def clear_logs
|
16
|
+
@log.clear_logs
|
17
|
+
redirect_to hourly_logs_path({log_file: params[:log_file]})
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def hourly_params
|
23
|
+
params.permit( :log_file, :utf8, :_method, :authenticity_token, :commit, :page, date_range: [:end, :start, :divider])
|
24
|
+
end
|
25
|
+
|
26
|
+
def set_logger
|
27
|
+
@log = PrettyLogger.new(hourly_params)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -2,6 +2,15 @@ module Rails
|
|
2
2
|
module Pretty
|
3
3
|
module Logger
|
4
4
|
module ApplicationHelper
|
5
|
+
|
6
|
+
def modify_name(name)
|
7
|
+
return "#{name [-13..-10]}/#{name[-9..-8]}/#{name[-7..-6]} : #{name[-4..-1]}"
|
8
|
+
end
|
9
|
+
|
10
|
+
def trim_name(name)
|
11
|
+
index = name.split("/log/").last.capitalize
|
12
|
+
end
|
13
|
+
|
5
14
|
end
|
6
15
|
end
|
7
16
|
end
|
@@ -1,9 +1,7 @@
|
|
1
1
|
module Rails::Pretty::Logger
|
2
2
|
module DashboardsHelper
|
3
3
|
def check_highlight(line)
|
4
|
-
if line.include?("[HIGHLIGHT]")
|
5
|
-
return "<div class='highlight'>#{line.delete('[HIGHLIGHT]')}</div>".html_safe
|
6
|
-
end
|
4
|
+
return "<div class='highlight'>#{line.remove('[HIGHLIGHT]')}</div>".html_safe if line.include?("[HIGHLIGHT]")
|
7
5
|
line
|
8
6
|
end
|
9
7
|
|
@@ -11,6 +9,10 @@ module Rails::Pretty::Logger
|
|
11
9
|
Time.now.strftime("%Y-%m-%d")
|
12
10
|
end
|
13
11
|
|
12
|
+
def is_stdout?
|
13
|
+
ENV["RAILS_LOG_TO_STDOUT"].present?
|
14
|
+
end
|
15
|
+
|
14
16
|
def set_divider(params)
|
15
17
|
if params[:date_range].blank?
|
16
18
|
100
|
@@ -22,15 +24,11 @@ module Rails::Pretty::Logger
|
|
22
24
|
end
|
23
25
|
|
24
26
|
def is_file_active(name, params)
|
25
|
-
if params[:log_file] == name
|
26
|
-
"active"
|
27
|
-
end
|
27
|
+
"active" if params[:log_file] == name
|
28
28
|
end
|
29
29
|
|
30
30
|
def is_page_active(index, params)
|
31
|
-
if params[:page].to_i == index
|
32
|
-
"active"
|
33
|
-
end
|
31
|
+
"active" if params[:page].to_i == index
|
34
32
|
end
|
35
33
|
|
36
34
|
def check_rails_version
|
@@ -0,0 +1,21 @@
|
|
1
|
+
<% if log_data.fetch(:error).present? %>
|
2
|
+
<p>
|
3
|
+
<%= log_data.fetch(:error) %>
|
4
|
+
</p>
|
5
|
+
<% end %>
|
6
|
+
|
7
|
+
<% if log_data.fetch(:error).blank? %>
|
8
|
+
<% log_data.fetch(:logs_count).times do |index| %>
|
9
|
+
<%= link_to(
|
10
|
+
index + 1,
|
11
|
+
send(locals[:path],
|
12
|
+
log_file: params.fetch(:log_file),
|
13
|
+
page: index,
|
14
|
+
date_range: { start: log.start_date, end: log.end_date, divider: set_divider(params) }
|
15
|
+
),
|
16
|
+
html_options = {class: "#{is_page_active(index, params)}"}
|
17
|
+
|
18
|
+
) %>
|
19
|
+
<% end %>
|
20
|
+
<% end %>
|
21
|
+
<hr>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
|
2
|
+
<div class="logger_navbar">
|
3
|
+
<p>
|
4
|
+
<%= link_to(path_name, hourly_logs_path, html_options = {class: "dashboard_button"}) %>
|
5
|
+
</p>
|
6
|
+
Log Files:
|
7
|
+
<% Rails::Pretty::Logger::PrettyLogger.get_log_file_list.each do |key, value| %>
|
8
|
+
<%= link_to(trim_name(value[:file_name]),
|
9
|
+
logs_dashboards_path(log_file: value[:file_name], date_range: { start: time_now, end: time_now }),
|
10
|
+
html_options = {class: "#{is_file_active(value[:file_name], params)}",
|
11
|
+
data: { confirm: "Log file size is #{ value[:file_size] } MB. Are you sure to open this file? " }}) %>
|
12
|
+
<% end %>
|
13
|
+
</div>
|
14
|
+
<hr>
|
@@ -1,23 +1,31 @@
|
|
1
1
|
<% if @log_file_list.count == 0 %>
|
2
|
-
<div>
|
3
|
-
|
4
|
-
</div>
|
2
|
+
<div>
|
3
|
+
<h1 class="message">There is no log file to show</h1>
|
4
|
+
</div>
|
5
|
+
|
6
|
+
<% elsif is_stdout?%>
|
7
|
+
<div>
|
8
|
+
<h1 class="message"> "RAILS_LOG_TO_STDOUT" is present. no logs kept, remove it for logging </h1>
|
9
|
+
</div>
|
5
10
|
|
6
11
|
<% else %>
|
7
|
-
<div>
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
12
|
+
<div class="logger_navbar">
|
13
|
+
<p>
|
14
|
+
<%= link_to('Hourly logs', hourly_logs_path, html_options = {class: "dashboard_button"}) %>
|
15
|
+
</p>
|
16
|
+
Log Files:
|
17
|
+
<% @log_file_list .each do |key, value| %>
|
18
|
+
<%= link_to(trim_name(value.fetch(:file_name)),
|
19
|
+
logs_dashboards_path(log_file: value.fetch(:file_name), date_range: { start: time_now, end: time_now }),
|
20
|
+
html_options = {class: "dashboard_button",
|
21
|
+
data: { confirm: "Log file size is #{ value[:file_size] } MB. Are you sure to open this file? " }}) %>
|
14
22
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
23
|
+
<%= link_to("x",
|
24
|
+
clear_logs_dashboards_path(log_file: value.fetch(:file_name)),
|
25
|
+
html_options = {class: "clear_logs",
|
26
|
+
method: :post,
|
27
|
+
data: { confirm: "Are you sure to clear all logs from #{value.fetch(:file_name).capitalize}? " }}) %>
|
28
|
+
<% end %>
|
21
29
|
|
22
|
-
</div>
|
30
|
+
</div>
|
23
31
|
<% end %>
|
@@ -1,36 +1,6 @@
|
|
1
|
+
<%= render "partials/navbar", path_name: 'Hourly logs' %>
|
1
2
|
|
2
|
-
|
3
|
-
Log Files:
|
4
|
-
<% @log.file_list.each do |key, value| %>
|
5
|
-
<%= link_to(value[:file_name].capitalize,
|
6
|
-
logs_dashboards_path(log_file: value[:file_name], date_range: { start: time_now, end: time_now }),
|
7
|
-
html_options = {class: "#{is_file_active(value[:file_name], params)}",
|
8
|
-
data: { confirm: "Log file size is #{ value[:file_size] } MB. Are you sure to open this file? " }}) %>
|
9
|
-
<% end %>
|
10
|
-
</div>
|
11
|
-
<hr>
|
12
|
-
|
13
|
-
<% if @log_data[:error].present? %>
|
14
|
-
<p>
|
15
|
-
<%= @log_data[:error] %>
|
16
|
-
</p>
|
17
|
-
<% end %>
|
18
|
-
|
19
|
-
<% if @log_data[:error].blank? %>
|
20
|
-
<% @log_data[:logs_count].times do |index| %>
|
21
|
-
<%= link_to(
|
22
|
-
index + 1,
|
23
|
-
logs_dashboards_path(
|
24
|
-
log_file: params[:log_file],
|
25
|
-
page: index,
|
26
|
-
date_range: { start: @log.start_date, end: @log.end_date, divider: set_divider(params) }
|
27
|
-
),
|
28
|
-
html_options = {class: "#{is_page_active(index, params)}"}
|
29
|
-
|
30
|
-
) %>
|
31
|
-
<% end %>
|
32
|
-
<% end %>
|
33
|
-
<hr>
|
3
|
+
<%= render "partials/error_pagination", log: @log, log_data: @log_data , locals: {path: "logs_dashboards_path"} %>
|
34
4
|
|
35
5
|
<div class="form-group">
|
36
6
|
<%= form_for :date_range, url: logs_dashboards_path(log_file: params[:log_file]), method: :post do |f| %>
|
@@ -56,7 +26,6 @@
|
|
56
26
|
<% end %>
|
57
27
|
</div>
|
58
28
|
|
59
|
-
|
60
29
|
<hr>
|
61
30
|
|
62
31
|
<% @log_data[:paginated_logs].each do |line| %>
|
@@ -0,0 +1,39 @@
|
|
1
|
+
<% if @log_file_list.count == 0 %>
|
2
|
+
<div>
|
3
|
+
<h1 class="message">There is no log file to show</h1>
|
4
|
+
</div>
|
5
|
+
|
6
|
+
<% else %>
|
7
|
+
|
8
|
+
<div class="hourly-list">
|
9
|
+
|
10
|
+
<div id="hourly">
|
11
|
+
|
12
|
+
<div class="logger_navbar">
|
13
|
+
<p>
|
14
|
+
<%= link_to('Main Logs',dashboards_path, html_options = {class: "dashboard_button"}) %>
|
15
|
+
</p>
|
16
|
+
|
17
|
+
|
18
|
+
</div>
|
19
|
+
<input class="search" placeholder="Search" />
|
20
|
+
<button class="sort" data-sort="name">
|
21
|
+
Sort
|
22
|
+
</button>
|
23
|
+
<ul class="pagination"></ul>
|
24
|
+
|
25
|
+
<ul class="list">
|
26
|
+
<% @log_file_list .each do |key, value| %>
|
27
|
+
<li>
|
28
|
+
<h5 class="name">
|
29
|
+
<%= link_to(modify_name(value.fetch(:file_name)),
|
30
|
+
logs_hourly_logs_path(log_file: value.fetch(:file_name), date_range: { start: time_now, end: time_now }),
|
31
|
+
html_options = {class: "dashboard_button",
|
32
|
+
data: { confirm: "Log file size is #{ value.fetch(:file_size) } MB. Are you sure to open this file? " }}) %>
|
33
|
+
</h5>
|
34
|
+
<% end %>
|
35
|
+
</li>
|
36
|
+
</ul>
|
37
|
+
</div>
|
38
|
+
</div>
|
39
|
+
<% end %>
|
@@ -0,0 +1,37 @@
|
|
1
|
+
<div class="logger_navbar">
|
2
|
+
<p>
|
3
|
+
<%= link_to('Main Logs',dashboards_path, html_options = {class: "dashboard_button"}) %>
|
4
|
+
<%= link_to('Hourly Logs ', hourly_logs_path, html_options = {class: "dashboard_button"}) %>
|
5
|
+
</p>
|
6
|
+
</div>
|
7
|
+
<hr>
|
8
|
+
<% if @log_data[:logs_count] > 0 %>
|
9
|
+
|
10
|
+
<%= render "partials/error_pagination", log: @log, log_data: @log_data, locals: {path: "logs_hourly_logs_path"} %>
|
11
|
+
|
12
|
+
<% if @log_data[:logs_count] > 0 %>
|
13
|
+
<p>
|
14
|
+
<%= link_to("Clear logs",
|
15
|
+
clear_logs_hourly_logs_path(log_file: params[:log_file]),
|
16
|
+
html_options = {class: "clear_logs",
|
17
|
+
method: :post,
|
18
|
+
data: { confirm: "Are you sure to clear all logs? " }}) %>
|
19
|
+
</p>
|
20
|
+
<% end %>
|
21
|
+
</div>
|
22
|
+
|
23
|
+
|
24
|
+
<hr>
|
25
|
+
|
26
|
+
<% @log_data[:paginated_logs].each do |line| %>
|
27
|
+
<p>
|
28
|
+
<%= check_highlight(line) %>
|
29
|
+
</p>
|
30
|
+
<% end %>
|
31
|
+
|
32
|
+
<% else %>
|
33
|
+
|
34
|
+
<div>
|
35
|
+
<h1 class="message">There is no log file to show</h1>
|
36
|
+
</div>
|
37
|
+
<% end %>
|
data/config/routes.rb
CHANGED
@@ -5,4 +5,10 @@ Rails::Pretty::Logger::Engine.routes.draw do
|
|
5
5
|
post :logs, on: :collection
|
6
6
|
post :clear_logs, on: :collection
|
7
7
|
end
|
8
|
+
|
9
|
+
resources :hourly_logs, only: [:index] do
|
10
|
+
get :logs, on: :collection
|
11
|
+
post :logs, on: :collection
|
12
|
+
post :clear_logs, on: :collection
|
13
|
+
end
|
8
14
|
end
|
data/lib/rails/pretty/logger.rb
CHANGED
@@ -1,156 +1,146 @@
|
|
1
1
|
require "rails/pretty/logger/engine"
|
2
2
|
|
3
|
-
module Rails
|
4
|
-
module Pretty
|
5
|
-
module Logger
|
3
|
+
module Rails::Pretty::Logger
|
6
4
|
|
7
|
-
|
5
|
+
class PrettyLogger
|
8
6
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
def self.logger
|
15
|
-
Rails.logger
|
16
|
-
end
|
7
|
+
def initialize(params)
|
8
|
+
@log_file = params[:log_file]
|
9
|
+
@filter_params = params
|
10
|
+
end
|
17
11
|
|
18
|
-
|
19
|
-
|
20
|
-
|
12
|
+
def self.logger
|
13
|
+
Rails.logger
|
14
|
+
end
|
21
15
|
|
22
|
-
|
23
|
-
|
24
|
-
|
16
|
+
def self.highlight(log)
|
17
|
+
self.logger.tagged('HIGHLIGHT') { logger.info log }
|
18
|
+
end
|
25
19
|
|
20
|
+
def self.file_size(log_file)
|
21
|
+
File.size?("#{log_file}").to_f / 2**20
|
22
|
+
end
|
26
23
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
log[index] = {}
|
32
|
-
log[index][:file_name] = File.basename(log_file, ".log")
|
33
|
-
log[index][:file_size] = self.file_size(log_file).round(4)
|
34
|
-
end
|
35
|
-
return log
|
36
|
-
end
|
24
|
+
def self.get_log_file_list
|
25
|
+
log_files = Dir["#{File.join(Rails.root, 'log')}" + "/**.*"]
|
26
|
+
self.logs_atr(log_files)
|
27
|
+
end
|
37
28
|
|
38
|
-
|
39
|
-
|
40
|
-
|
29
|
+
def self.get_hourly_log_file_list
|
30
|
+
log_files = Dir["#{Rails.root}/log/hourly/**/*.*"].sort
|
31
|
+
self.logs_atr(log_files)
|
32
|
+
end
|
41
33
|
|
42
|
-
|
43
|
-
|
44
|
-
|
34
|
+
def self.logs_atr(log_files)
|
35
|
+
log = {}
|
36
|
+
log_files.each_with_index do |log_file,index|
|
37
|
+
log[index] = {}
|
38
|
+
log[index][:file_name] = log_file
|
39
|
+
log[index][:file_size] = self.file_size(log_file).round(4)
|
40
|
+
end
|
41
|
+
log
|
42
|
+
end
|
45
43
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
else
|
50
|
-
Time.now.strftime("%Y-%m-%d")
|
51
|
-
end
|
52
|
-
end
|
44
|
+
def clear_logs
|
45
|
+
open(@log_file, File::TRUNC) {}
|
46
|
+
end
|
53
47
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
else
|
58
|
-
Time.now.strftime("%Y-%m-%d")
|
59
|
-
end
|
60
|
-
end
|
48
|
+
def start_date
|
49
|
+
@filter_params.dig(:date_range, :start) || Time.now.strftime("%Y-%m-%d")
|
50
|
+
end
|
61
51
|
|
62
|
-
|
63
|
-
|
64
|
-
|
52
|
+
def end_date
|
53
|
+
@filter_params.dig(:date_range, :end) || Time.now.strftime("%Y-%m-%d")
|
54
|
+
end
|
65
55
|
|
66
|
-
|
67
|
-
|
56
|
+
def filter_logs_with_date(file)
|
57
|
+
arr = []
|
58
|
+
start = false
|
59
|
+
|
60
|
+
IO.foreach(file) do |line|
|
61
|
+
if get_date_from_log_line(line)
|
62
|
+
start = true
|
63
|
+
arr.push(line)
|
64
|
+
elsif start && !(line_include_date?(line))
|
65
|
+
arr.push(line)
|
66
|
+
else
|
68
67
|
start = false
|
69
|
-
|
70
|
-
IO.foreach(file) do |line|
|
71
|
-
if get_date_from_log_line(line)
|
72
|
-
start = true
|
73
|
-
arr.push(line)
|
74
|
-
elsif start && !(line_include_date?(line))
|
75
|
-
arr.push(line)
|
76
|
-
else
|
77
|
-
start = false
|
78
|
-
end
|
79
|
-
end
|
80
|
-
return arr
|
81
68
|
end
|
69
|
+
end
|
70
|
+
return arr
|
71
|
+
end
|
82
72
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
73
|
+
def get_test_logs(file)
|
74
|
+
arr = []
|
75
|
+
IO.foreach(file) do |line|
|
76
|
+
arr.push(line)
|
77
|
+
end
|
78
|
+
return arr
|
79
|
+
end
|
90
80
|
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
81
|
+
def get_logs_from_file(file)
|
82
|
+
if @filter_params[:log_file].include?("test") || @filter_params[:log_file].include?("hourly")
|
83
|
+
get_test_logs(file)
|
84
|
+
else
|
85
|
+
filter_logs_with_date(file)
|
86
|
+
end
|
87
|
+
end
|
98
88
|
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
89
|
+
def get_date_from_log_line(line)
|
90
|
+
params = @filter_params[:date_range]
|
91
|
+
if line_include_date?(line)
|
92
|
+
date_string_index = line.index("at ")
|
93
|
+
string_date = line[date_string_index .. date_string_index + 13]
|
94
|
+
date = string_date.to_date.strftime("%Y-%m-%d")
|
95
|
+
start_date = @filter_params.dig(:date_range, :start)
|
96
|
+
end_date = @filter_params.dig(:date_range, :end)
|
97
|
+
if start_date.present? && end_date.present?
|
98
|
+
date.between?(start_date, end_date)
|
99
|
+
else
|
100
|
+
date.between?(Time.now.strftime("%Y-%m-%d"), Time.now.strftime("%Y-%m-%d"))
|
111
101
|
end
|
102
|
+
end
|
103
|
+
end
|
112
104
|
|
113
|
-
|
114
|
-
|
115
|
-
|
105
|
+
def line_include_date?(line)
|
106
|
+
line.include?("Started")
|
107
|
+
end
|
116
108
|
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
end
|
124
|
-
elsif params[:start].blank? || params[:end].blank?
|
125
|
-
"Start and End Date must be given."
|
126
|
-
end
|
127
|
-
end
|
109
|
+
def validate_date
|
110
|
+
start_date = @filter_params.dig(:date_range, :start)
|
111
|
+
end_date = @filter_params.dig(:date_range, :end)
|
112
|
+
if (start_date.present? && end_date.present?)
|
113
|
+
if (start_date > end_date)
|
114
|
+
"End Date should not be less than Start Date."
|
128
115
|
end
|
116
|
+
else
|
117
|
+
"Start and End Date must be given."
|
118
|
+
end
|
119
|
+
end
|
129
120
|
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
121
|
+
def log_data
|
122
|
+
error = validate_date
|
123
|
+
divider = set_divider_value
|
124
|
+
logs = get_logs_from_file(@log_file)
|
125
|
+
logs_count = (logs.count.to_f / divider).ceil
|
126
|
+
paginated_logs = logs[ @filter_params[:page].to_i * divider ..
|
127
|
+
(@filter_params[:page].to_i * divider) + divider ]
|
128
|
+
data = {}
|
129
|
+
data[:logs_count] = logs_count
|
130
|
+
data[:paginated_logs] = paginated_logs
|
131
|
+
data[:error] = error
|
132
|
+
return data
|
133
|
+
end
|
143
134
|
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
end
|
152
|
-
end
|
135
|
+
def set_divider_value
|
136
|
+
if @filter_params[:date_range].blank?
|
137
|
+
100
|
138
|
+
elsif @filter_params[:date_range][:divider].blank?
|
139
|
+
100
|
140
|
+
else
|
141
|
+
@filter_params[:date_range][:divider].to_i
|
153
142
|
end
|
154
143
|
end
|
144
|
+
|
155
145
|
end
|
156
146
|
end
|