any_logger 0.1.2 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +6 -0
- data/CHANGELOG.md +8 -0
- data/README.md +3 -4
- data/lib/any_logger/example/controller_subscriber.rb +34 -51
- data/lib/any_logger/version.rb +1 -1
- data/lib/any_logger.rb +2 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: de56cdda136e683ae52ee87f6a0cb802792f1e3aa1c6e946ade58b6dde832664
|
4
|
+
data.tar.gz: 9760f9c169b6d1f721e353d2a995b3da7ed07218cfd3f9d7ff1d7f7bd58417cf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c3f6346e9da6a573bddc918a41195a7827c9d34086c3ab1a5b47290017615ef1c5d182968ee06a94d8eab2b31d672533cf7166fb7109849d327a7e39e5455dfb
|
7
|
+
data.tar.gz: de5672b026af7fbf51619d947e72ca52495781fc39397c559b10ca467227fb3811e61555eac684310b219e1628007dea3220f19ae0f5571e44cfeb46266723b6
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -1,19 +1,18 @@
|
|
1
1
|
# AnyLogger
|
2
2
|
|
3
|
-
|
3
|
+
A DSL for simplifying modification of Rails LogSubscribers
|
4
4
|
|
5
5
|
### Example
|
6
6
|
|
7
7
|
```ruby
|
8
|
+
# initializers/any_logger.rb
|
8
9
|
require "any_logger"
|
9
10
|
require "any_logger/example/controller_subscriber"
|
10
11
|
|
11
12
|
AnyLogger.configure do |config|
|
12
13
|
config.logger = Rails::Rack::Logger # default: AnyLogger::Example::RackLogger
|
13
14
|
config.swap :action_controller, AnyLogger::Example::ControllerSubscriber
|
14
|
-
config.detach :
|
15
|
+
config.detach :action_view
|
15
16
|
config.attach :active_record, MyLogger::ModelSubscriber
|
16
17
|
end
|
17
|
-
|
18
|
-
AnyLogger.start
|
19
18
|
```
|
@@ -28,65 +28,44 @@ module AnyLogger
|
|
28
28
|
# params: {"foo" => "bar"}
|
29
29
|
# redirect: "/fuga"
|
30
30
|
private def formatted_message
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
31
|
+
e = formatted_log_details
|
32
|
+
# ヒアドキュメントだとparamsとredirectの有無で改行の入り方が変わってしまうので、配列を結合する方法を採用
|
33
|
+
lines = []
|
34
|
+
lines << ""
|
35
|
+
lines << "[#{e[:method]}] #{e[:controller]}##{e[:action]} for: #{e[:ip]} at: #{e[:datetime]}"
|
36
|
+
lines << " 🔍 path: \"#{e[:path]}\""
|
37
|
+
lines << " 🧱 status: #{e[:status]} in #{e[:duration]}ms " \
|
38
|
+
"(view: #{e[:view_runtime]}ms | db: #{e[:db_runtime]}ms)"
|
39
|
+
lines << " 📝 params: #{e[:params]}" if @payload[:params].present?
|
40
|
+
lines << " 🚀 redirect: \"#{e[:redirect_to]}\"" if @headers[:location].present?
|
41
|
+
lines.join("\n")
|
38
42
|
end
|
39
43
|
|
40
44
|
private def match_unnecessary_path?
|
41
45
|
UNNECESSARY_PATHS.include?(@payload[:path])
|
42
46
|
end
|
43
47
|
|
44
|
-
private def
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
end
|
63
|
-
|
64
|
-
private def l_status
|
65
|
-
"🧱 status: #{@payload[:status]}"
|
66
|
-
end
|
67
|
-
|
68
|
-
private def l_duration
|
69
|
-
"in #{@event.duration&.round(2) || 0}ms"
|
70
|
-
end
|
71
|
-
|
72
|
-
private def l_view_runtime
|
73
|
-
"view: #{@payload[:view_runtime]&.round(2) || 0}ms"
|
74
|
-
end
|
75
|
-
|
76
|
-
private def l_db_runtime
|
77
|
-
"db: #{@payload[:db_runtime]&.round(2) || 0}ms"
|
78
|
-
end
|
79
|
-
|
80
|
-
private def l_params
|
81
|
-
@payload[:params] = except_unnecessary_params
|
82
|
-
"📝 params: #{@payload[:params]&.inspect || {}}"
|
83
|
-
end
|
84
|
-
|
85
|
-
private def l_redirect
|
48
|
+
private def formatted_log_details
|
49
|
+
{
|
50
|
+
method: @payload[:method].upcase,
|
51
|
+
controller: @payload[:controller],
|
52
|
+
action: @payload[:action],
|
53
|
+
ip: @payload[:request].remote_ip,
|
54
|
+
datetime: conversion_event_time_to_datetime,
|
55
|
+
path: @payload[:path],
|
56
|
+
status: @payload[:status],
|
57
|
+
duration: round_value(@event.duration),
|
58
|
+
view_runtime: round_value(@payload[:view_runtime]),
|
59
|
+
db_runtime: round_value(@payload[:db_runtime]),
|
60
|
+
params: expect_unnecessary_params || {},
|
61
|
+
redirect_to: formatted_redirect_location
|
62
|
+
}
|
63
|
+
end
|
64
|
+
|
65
|
+
private def formatted_redirect_location
|
86
66
|
return unless REDIRECT_CODES.any? { @payload[:status] == Rack::Utils.status_code(it) }
|
87
67
|
|
88
|
-
|
89
|
-
"🚀 redirect: \"#{ellipsised_url}\""
|
68
|
+
ellipsis_scheme_and_authority(@headers[:location])
|
90
69
|
end
|
91
70
|
|
92
71
|
private def conversion_event_time_to_datetime
|
@@ -97,6 +76,10 @@ module AnyLogger
|
|
97
76
|
Time.at((now - elapsed).to_i)
|
98
77
|
end
|
99
78
|
|
79
|
+
private def round_value(value)
|
80
|
+
value&.round(2) || 0
|
81
|
+
end
|
82
|
+
|
100
83
|
private def except_unnecessary_params
|
101
84
|
@payload[:params].except("controller", "action")
|
102
85
|
end
|
data/lib/any_logger/version.rb
CHANGED
data/lib/any_logger.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: any_logger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- milkeclair
|
@@ -93,7 +93,7 @@ dependencies:
|
|
93
93
|
- - ">="
|
94
94
|
- !ruby/object:Gem::Version
|
95
95
|
version: '0'
|
96
|
-
description:
|
96
|
+
description: A DSL for simplifying modification of Rails LogSubscribers
|
97
97
|
email:
|
98
98
|
- milkeclair.black@gmail.com
|
99
99
|
executables: []
|
@@ -135,5 +135,5 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
135
135
|
requirements: []
|
136
136
|
rubygems_version: 3.6.2
|
137
137
|
specification_version: 4
|
138
|
-
summary:
|
138
|
+
summary: A DSL for simplifying modification of Rails LogSubscribers
|
139
139
|
test_files: []
|