lograge 0.3.1 → 0.3.2
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/lib/lograge.rb +46 -18
- data/lib/lograge/formatters/logstash.rb +1 -1
- data/lib/lograge/log_subscriber.rb +9 -4
- data/lib/lograge/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a85786ea77c363233831965c6e03f24bca37cd24
|
4
|
+
data.tar.gz: 9d1c277d2df5eda46969e444aa356ba99ea40e89
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c008c958f766ae2a01360c5873320f13cb22065a3fe5b61ec873ef078d85bbcfba2f5d2a5f6e164ab996f565be1f73a7e48efe0c6fe4b210f94180b3904446cb
|
7
|
+
data.tar.gz: eb3f7560580199ecde41d01740dc4a95b8b6a4d3e31c82035e0c8bc899009d29553fb649b46c8913981730bc1a7f33046080e423cd10655c1b0ccf1dcf7b4ca9
|
data/lib/lograge.rb
CHANGED
@@ -12,6 +12,7 @@ require 'active_support/core_ext/module/attribute_accessors'
|
|
12
12
|
require 'active_support/core_ext/string/inflections'
|
13
13
|
require 'active_support/ordered_options'
|
14
14
|
|
15
|
+
# rubocop:disable ModuleLength
|
15
16
|
module Lograge
|
16
17
|
module_function
|
17
18
|
|
@@ -26,7 +27,7 @@ module Lograge
|
|
26
27
|
mattr_writer :custom_options
|
27
28
|
self.custom_options = nil
|
28
29
|
|
29
|
-
def
|
30
|
+
def custom_options(event)
|
30
31
|
if @@custom_options.respond_to?(:call)
|
31
32
|
@@custom_options.call(event)
|
32
33
|
else
|
@@ -40,7 +41,7 @@ module Lograge
|
|
40
41
|
mattr_writer :before_format
|
41
42
|
self.before_format = nil
|
42
43
|
|
43
|
-
def
|
44
|
+
def before_format(data, payload)
|
44
45
|
result = nil
|
45
46
|
result = @@before_format.call(data, payload) if @@before_format
|
46
47
|
result || data
|
@@ -58,7 +59,7 @@ module Lograge
|
|
58
59
|
# are given to 'ignore'. Both methods can be called multiple times, which
|
59
60
|
# just adds more ignore conditions to a list that is checked before logging.
|
60
61
|
|
61
|
-
def
|
62
|
+
def ignore_actions(actions)
|
62
63
|
ignore(lambda do |event|
|
63
64
|
params = event.payload[:params]
|
64
65
|
Array(actions).include?("#{params['controller']}##{params['action']}")
|
@@ -69,7 +70,7 @@ module Lograge
|
|
69
70
|
@ignore_tests ||= []
|
70
71
|
end
|
71
72
|
|
72
|
-
def
|
73
|
+
def ignore(test)
|
73
74
|
ignore_tests.push(test) if test
|
74
75
|
end
|
75
76
|
|
@@ -77,7 +78,7 @@ module Lograge
|
|
77
78
|
@ignore_tests = []
|
78
79
|
end
|
79
80
|
|
80
|
-
def
|
81
|
+
def ignore?(event)
|
81
82
|
ignore_tests.any? { |ignore_test| ignore_test.call(event) }
|
82
83
|
end
|
83
84
|
|
@@ -92,7 +93,7 @@ module Lograge
|
|
92
93
|
# - :logstash - JSON formatted as a Logstash Event.
|
93
94
|
mattr_accessor :formatter
|
94
95
|
|
95
|
-
def
|
96
|
+
def remove_existing_log_subscriptions
|
96
97
|
ActiveSupport::LogSubscriber.log_subscribers.each do |subscriber|
|
97
98
|
case subscriber
|
98
99
|
when ActionView::LogSubscriber
|
@@ -103,7 +104,7 @@ module Lograge
|
|
103
104
|
end
|
104
105
|
end
|
105
106
|
|
106
|
-
def
|
107
|
+
def unsubscribe(component, subscriber)
|
107
108
|
events = subscriber.public_methods(false).reject { |method| method.to_s == 'call' }
|
108
109
|
events.each do |event|
|
109
110
|
ActiveSupport::Notifications.notifier.listeners_for("#{event}.#{component}").each do |listener|
|
@@ -114,27 +115,54 @@ module Lograge
|
|
114
115
|
end
|
115
116
|
end
|
116
117
|
|
117
|
-
def
|
118
|
+
def setup(app)
|
118
119
|
self.application = app
|
119
|
-
|
120
|
+
disable_rack_cache_verbose_output
|
121
|
+
keep_original_rails_log
|
120
122
|
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
123
|
+
attach_to_action_controller
|
124
|
+
set_lograge_log_options
|
125
|
+
support_deprecated_config # TODO: Remove with version 1.0
|
126
|
+
set_formatter
|
127
|
+
set_ignores
|
128
|
+
end
|
125
129
|
|
126
|
-
|
130
|
+
def set_ignores
|
131
|
+
Lograge.ignore_actions(lograge_config.ignore_actions)
|
132
|
+
Lograge.ignore(lograge_config.ignore_custom)
|
133
|
+
end
|
127
134
|
|
135
|
+
def set_formatter
|
136
|
+
Lograge.formatter = lograge_config.formatter || Lograge::Formatters::KeyValue.new
|
137
|
+
end
|
138
|
+
|
139
|
+
def attach_to_action_controller
|
128
140
|
Lograge::RequestLogSubscriber.attach_to :action_controller
|
141
|
+
end
|
142
|
+
|
143
|
+
def set_lograge_log_options
|
144
|
+
Lograge.logger = lograge_config.logger
|
129
145
|
Lograge.custom_options = lograge_config.custom_options
|
130
146
|
Lograge.before_format = lograge_config.before_format
|
131
147
|
Lograge.log_level = lograge_config.log_level || :info
|
132
|
-
support_deprecated_config # TODO: Remove with version 1.0
|
133
|
-
Lograge.formatter = lograge_config.formatter || Lograge::Formatters::KeyValue.new
|
134
|
-
Lograge.ignore_actions(lograge_config.ignore_actions)
|
135
|
-
Lograge.ignore(lograge_config.ignore_custom)
|
136
148
|
end
|
137
149
|
|
150
|
+
def disable_rack_cache_verbose_output
|
151
|
+
application.config.action_dispatch.rack_cache[:verbose] = false if rack_cache_hashlike?(application)
|
152
|
+
end
|
153
|
+
|
154
|
+
def keep_original_rails_log
|
155
|
+
return if lograge_config.keep_original_rails_log
|
156
|
+
|
157
|
+
require 'lograge/rails_ext/rack/logger'
|
158
|
+
Lograge.remove_existing_log_subscriptions
|
159
|
+
end
|
160
|
+
|
161
|
+
def rack_cache_hashlike?(app)
|
162
|
+
app.config.action_dispatch.rack_cache && app.config.action_dispatch.rack_cache.respond_to?(:[]=)
|
163
|
+
end
|
164
|
+
private_class_method :rack_cache_hashlike?
|
165
|
+
|
138
166
|
# TODO: Remove with version 1.0
|
139
167
|
|
140
168
|
def support_deprecated_config
|
@@ -5,7 +5,7 @@ module Lograge
|
|
5
5
|
load_dependencies
|
6
6
|
event = LogStash::Event.new(data)
|
7
7
|
|
8
|
-
event
|
8
|
+
event['message'] = "[#{data[:status]}] #{data[:method]} #{data[:path]} (#{data[:controller]}##{data[:action]})"
|
9
9
|
event.to_json
|
10
10
|
end
|
11
11
|
|
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'json'
|
2
|
-
|
3
2
|
require 'active_support/core_ext/class/attribute'
|
4
3
|
require 'active_support/log_subscriber'
|
5
4
|
|
@@ -10,7 +9,7 @@ module Lograge
|
|
10
9
|
|
11
10
|
payload = event.payload
|
12
11
|
|
13
|
-
data
|
12
|
+
data = extract_request(payload)
|
14
13
|
extract_status(data, payload)
|
15
14
|
runtimes(data, event)
|
16
15
|
location(data)
|
@@ -62,13 +61,19 @@ module Lograge
|
|
62
61
|
data[:status] = status.to_i
|
63
62
|
elsif (error = payload[:exception])
|
64
63
|
exception, message = error
|
65
|
-
data[:status] =
|
66
|
-
data[:error]
|
64
|
+
data[:status] = get_error_status_code(exception)
|
65
|
+
data[:error] = "#{exception}: #{message}"
|
67
66
|
else
|
68
67
|
data[:status] = 0
|
69
68
|
end
|
70
69
|
end
|
71
70
|
|
71
|
+
def get_error_status_code(exception)
|
72
|
+
exception_object = exception.constantize.new
|
73
|
+
exception_wrapper = ::ActionDispatch::ExceptionWrapper.new({}, exception_object)
|
74
|
+
exception_wrapper.status_code
|
75
|
+
end
|
76
|
+
|
72
77
|
def custom_options(data, event)
|
73
78
|
options = Lograge.custom_options(event)
|
74
79
|
data.merge! options if options
|
data/lib/lograge/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lograge
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mathias Meyer
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-
|
12
|
+
date: 2015-05-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -127,3 +127,4 @@ signing_key:
|
|
127
127
|
specification_version: 4
|
128
128
|
summary: Tame Rails' multi-line logging into a single line per request
|
129
129
|
test_files: []
|
130
|
+
has_rdoc:
|