Module: Rails::Pretty::Logger::DashboardsHelper
- Defined in:
- app/helpers/rails/pretty/logger/dashboards_helper.rb
Constant Summary collapse
- STRUCTURED_LOG_PRIMARY_KEYS =
%w[@timestamp timestamp time datetime created_at severity level log_level message msg].freeze
Instance Method Summary collapse
- #check_highlight(line) ⇒ Object
- #is_file_active(name, params) ⇒ Object
- #is_page_active(index, params) ⇒ Object
- #is_stdout? ⇒ Boolean
- #parse_parameters(line) ⇒ Object
- #rails_pretty_logger_log_entry(entry) ⇒ Object
- #rails_pretty_logger_request_group(group) ⇒ Object
- #rails_pretty_logger_request_group_classes(group) ⇒ Object
- #rails_pretty_logger_request_summary(group) ⇒ Object
- #rails_pretty_logger_structured_header(severity, timestamp, message) ⇒ Object
- #rails_pretty_logger_structured_log(line) ⇒ Object
- #rails_pretty_logger_structured_log_classes(severity) ⇒ Object
- #rails_pretty_logger_structured_metadata(payload) ⇒ Object
- #rails_pretty_logger_structured_nested_log_level(payload) ⇒ Object
- #rails_pretty_logger_structured_payload(line) ⇒ Object
- #rails_pretty_logger_structured_value(payload, *keys) ⇒ Object
- #set_divider(params) ⇒ Object
- #time_now ⇒ Object
Instance Method Details
#check_highlight(line) ⇒ Object
5 6 7 |
# File 'app/helpers/rails/pretty/logger/dashboards_helper.rb', line 5 def check_highlight(line) rails_pretty_logger_log_entry(line) end |
#is_file_active(name, params) ⇒ Object
39 40 41 |
# File 'app/helpers/rails/pretty/logger/dashboards_helper.rb', line 39 def is_file_active(name, params) "active" if params[:log_file] == name end |
#is_page_active(index, params) ⇒ Object
43 44 45 |
# File 'app/helpers/rails/pretty/logger/dashboards_helper.rb', line 43 def is_page_active(index, params) "active" if params[:page].to_i == index end |
#is_stdout? ⇒ Boolean
25 26 27 |
# File 'app/helpers/rails/pretty/logger/dashboards_helper.rb', line 25 def is_stdout? ENV["RAILS_LOG_TO_STDOUT"].present? end |
#parse_parameters(line) ⇒ Object
47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'app/helpers/rails/pretty/logger/dashboards_helper.rb', line 47 def parse_parameters(line) parameters = line[line.index("Parameters:") + "Parameters:".length..] hash = JSON.parse(parameters.gsub("=>", ":")) parts = [tag.strong("Parameters:"), tag.br] hash.each do |key, value| parts << tag.strong("#{key}: ") parts << value.to_s parts << ", " end safe_join(parts) rescue JSON::ParserError, TypeError line end |
#rails_pretty_logger_log_entry(entry) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 |
# File 'app/helpers/rails/pretty/logger/dashboards_helper.rb', line 9 def rails_pretty_logger_log_entry(entry) return rails_pretty_logger_request_group(entry) if entry.is_a?(Hash) return rails_pretty_logger_structured_log(entry) if rails_pretty_logger_structured_payload(entry) return tag.div(entry.remove("[HIGHLIGHT]"), class: "log-line highlight") if entry.include?("[HIGHLIGHT]") if entry.include?("Parameters:") tag.div(parse_parameters(entry), class: "log-line log-line--parameters") else tag.div(entry, class: "log-line") end end |
#rails_pretty_logger_request_group(group) ⇒ Object
61 62 63 64 65 66 67 68 |
# File 'app/helpers/rails/pretty/logger/dashboards_helper.rb', line 61 def rails_pretty_logger_request_group(group) tag.details(class: rails_pretty_logger_request_group_classes(group), open: true) do safe_join([ tag.summary(rails_pretty_logger_request_summary(group), class: "log-request__summary"), tag.pre(group.fetch(:lines).join, class: "log-request__body") ]) end end |
#rails_pretty_logger_request_group_classes(group) ⇒ Object
83 84 85 86 87 |
# File 'app/helpers/rails/pretty/logger/dashboards_helper.rb', line 83 def rails_pretty_logger_request_group_classes(group) classes = ["log-request"] classes << "log-request--error" if group[:status].to_i >= 500 classes.join(" ") end |
#rails_pretty_logger_request_summary(group) ⇒ Object
70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'app/helpers/rails/pretty/logger/dashboards_helper.rb', line 70 def rails_pretty_logger_request_summary(group) return t("rails_pretty_logger.logs.ungrouped_lines") unless group[:type] == :request parts = [ tag.span(group[:method], class: "log-request__method"), tag.span(group[:path], class: "log-request__path") ] parts << tag.span(group[:status], class: "log-request__status") if group[:status].present? parts << tag.span(group[:duration], class: "log-request__duration") if group[:duration].present? safe_join(parts, " ") end |
#rails_pretty_logger_structured_header(severity, timestamp, message) ⇒ Object
106 107 108 109 110 111 112 113 |
# File 'app/helpers/rails/pretty/logger/dashboards_helper.rb', line 106 def rails_pretty_logger_structured_header(severity, , ) parts = [] parts << tag.span(severity, class: "structured-log__severity") if severity.present? parts << tag.span(, class: "structured-log__timestamp") if .present? parts << tag.strong(, class: "structured-log__message") safe_join(parts) end |
#rails_pretty_logger_structured_log(line) ⇒ Object
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'app/helpers/rails/pretty/logger/dashboards_helper.rb', line 89 def rails_pretty_logger_structured_log(line) payload = rails_pretty_logger_structured_payload(line) severity = rails_pretty_logger_structured_value(payload, *Rails::Pretty::Logger::PrettyLogger::STRUCTURED_SEVERITY_KEYS) severity ||= rails_pretty_logger_structured_nested_log_level(payload) = rails_pretty_logger_structured_value(payload, *Rails::Pretty::Logger::PrettyLogger::STRUCTURED_TIMESTAMP_KEYS) = payload["message"] || payload["msg"] || line tag.div(class: rails_pretty_logger_structured_log_classes(severity)) do safe_join([ tag.div(class: "structured-log__header") do rails_pretty_logger_structured_header(severity, , ) end, (payload) ].compact) end end |
#rails_pretty_logger_structured_log_classes(severity) ⇒ Object
129 130 131 132 133 |
# File 'app/helpers/rails/pretty/logger/dashboards_helper.rb', line 129 def rails_pretty_logger_structured_log_classes(severity) classes = ["structured-log"] classes << "structured-log--#{severity.to_s.downcase}" if severity.present? classes.join(" ") end |
#rails_pretty_logger_structured_metadata(payload) ⇒ Object
115 116 117 118 119 120 121 122 123 124 125 126 127 |
# File 'app/helpers/rails/pretty/logger/dashboards_helper.rb', line 115 def (payload) = payload.reject { |key, _value| STRUCTURED_LOG_PRIMARY_KEYS.include?(key.to_s) } return if .blank? tag.dl(class: "structured-log__metadata") do safe_join(.flat_map do |key, value| [ tag.dt(key), tag.dd(value.is_a?(Hash) || value.is_a?(Array) ? JSON.generate(value) : value.to_s) ] end) end end |
#rails_pretty_logger_structured_nested_log_level(payload) ⇒ Object
147 148 149 150 151 152 |
# File 'app/helpers/rails/pretty/logger/dashboards_helper.rb', line 147 def rails_pretty_logger_structured_nested_log_level(payload) nested_log = payload["log"] return unless nested_log.respond_to?(:[]) nested_log["level"].to_s.upcase.presence end |
#rails_pretty_logger_structured_payload(line) ⇒ Object
135 136 137 |
# File 'app/helpers/rails/pretty/logger/dashboards_helper.rb', line 135 def rails_pretty_logger_structured_payload(line) Rails::Pretty::Logger::PrettyLogger.structured_log_payload(line) end |
#rails_pretty_logger_structured_value(payload, *keys) ⇒ Object
139 140 141 142 143 144 145 |
# File 'app/helpers/rails/pretty/logger/dashboards_helper.rb', line 139 def rails_pretty_logger_structured_value(payload, *keys) keys.each do |key| return payload[key].to_s if payload[key].present? end nil end |
#set_divider(params) ⇒ Object
29 30 31 32 33 34 35 36 37 |
# File 'app/helpers/rails/pretty/logger/dashboards_helper.rb', line 29 def set_divider(params) if params[:date_range].blank? 100 elsif params[:date_range][:divider].blank? 100 else params[:date_range][:divider] end end |
#time_now ⇒ Object
21 22 23 |
# File 'app/helpers/rails/pretty/logger/dashboards_helper.rb', line 21 def time_now Time.now.strftime("%Y-%m-%d") end |